我正在尝试将一个应用程序容器化,因此我正在尝试为远程服务器上的现有数据库编写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代码中的设置需要指定或更改吗?
1条答案
按热度按时间oyt4ldly1#
如果您删除所有的反勾号,验证错误应该会消失。
我认为问题是VS需要MS SQL语法。
在MySQL中,反勾用于分隔名称,名称中可能包含空格或保留字等愚蠢的内容。如果没有此类冲突,可以删除所有反勾。导出工具通常在转储模式时默认包含这些反勾,但您可以配置为抑制它们以减少这种痛苦。
然而,反勾并不是唯一的区别,所以你仍然可能会得到其他不兼容标记(例如,我也看到这样的错误在
REPLACE INTO
和NOW()
)。我正在寻找一种方法来告诉VS“这是mysql!”但还没有找到它。