mysql 本地与远程主机中VS代码中的SQL语法错误

bq3bfh9z  于 2023-02-28  发布在  Mysql
关注(0)|答案(1)|浏览(105)

我正在尝试将一个应用程序容器化,因此我正在尝试为远程服务器上的现有数据库编写MariaDB数据库的init文件。我正在使用VS代码连接到远程服务器,包含转储内容的. sql文件没有错误,但当我尝试将其复制到本地计算机上的其他工作区时,出现了许多语法错误。
语法错误示例:

DROP TABLE IF EXISTS `accounts`;
CREATE TABLE `accounts` (
  `table_number` int(11) NOT NULL AUTO_INCREMENT, 
  `account_id` varchar(12) NOT NULL, 
  `account_name` varchar(5) NOT NULL,
  PRIMARY KEY (`table_number`)
) ENGINE=InnoDB AUTO_INCREMENT=261 DEFAULT CHARSET=latin1;
Incorrect syntax near '`'. Expecting '(', or SELECT. 

Incorrect syntax near '11'. Expecting '(', or SELECT.

关于'字符的错误出现在"accounts"和"table_number"的两个示例之前,但没有出现在"account_id"和"account_name"之前。CREATE中的每个数字都有语法错误警告。我尝试重新键入而不是复制和粘贴,以查看是否有隐藏字符导致这些问题,但没有成功。
这是操作系统问题吗?远程服务器是CentOS机器,而我的本地服务器是macOS Catalina。VS代码中的设置需要指定或更改吗?

oyt4ldly

oyt4ldly1#

如果您删除所有的反勾号,验证错误应该会消失。
我认为问题是VS需要MS SQL语法。
在MySQL中,反勾用于分隔名称,名称中可能包含空格或保留字等愚蠢的内容。如果没有此类冲突,可以删除所有反勾。导出工具通常在转储模式时默认包含这些反勾,但您可以配置为抑制它们以减少这种痛苦。
然而,反勾并不是唯一的区别,所以你仍然可能会得到其他不兼容标记(例如,我也看到这样的错误在REPLACE INTONOW())。
我正在寻找一种方法来告诉VS“这是mysql!”但还没有找到它。

相关问题