我最近开始测试MySQL 8而不是5.7
基本SQL select语句失败,在5.7和更早版本中正确工作。其中一个例子是:
select * from member;
您的SQL语法出现了错误.请参阅手册中“成员”附近的用法。
但是,如果将要查询的表的名称括起来(在本例中为成员),则语句运行良好,如果您在数据库名称前缀与表名前缀(以句点分隔),则为backticks或。
select * from `member`和select * from mydbname.member工作得都很好。
我想知道的是:
SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c)。注意,t1不包含在后台,而且数据库也没有前缀。我错过了什么吗?发布于 2019-09-27 11:47:42
当数据库对象名称与MySQL中的某些保留关键字相同时,需要使用backticks。
在您的示例中,自8.0.17版本以来,member实际上是MySQL中的一个保留词:
https://dev.mysql.com/doc/refman/8.0/en/keywords.html
是否有一个sql模式值,或者配置文件设置可以激活/停用此行为?
与Microsoft的“兼容性级别”选项不同,该选项更改查询中的保留词集,MySQL的兼容性选项列表不允许限制保留词--单词:https://makandracards.com/makandra/51169-understanding-sql-compatibility-modes-in-mysql-and-mariadb --我强烈建议不要使用MySQL的任何兼容性模式,因为您真的、真的不需要MySQL 4.x或MySQL 5.x的非标准行为(比如ONLY_FULL_GROUP_BY = off)。
https://stackoverflow.com/questions/58133838
复制相似问题