首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从5.7升级后的MySQL 8选择语句语法问题

从5.7升级后的MySQL 8选择语句语法问题
EN

Stack Overflow用户
提问于 2019-09-27 11:40:26
回答 1查看 786关注 0票数 1

我最近开始测试MySQL 8而不是5.7

基本SQL select语句失败,在5.7和更早版本中正确工作。其中一个例子是:

select * from member;

您的SQL语法出现了错误.请参阅手册中“成员”附近的用法。

但是,如果将要查询的表的名称括起来(在本例中为成员),则语句运行良好,如果您在数据库名称前缀与表名前缀(以句点分隔),则为backticks或。

select * from `member`select * from mydbname.member工作得都很好。

我想知道的是:

  1. 是否有一个sql模式值,或者配置文件设置可以激活/停用此行为?
  2. 用于选择和连接语法的mysql联机参考示例也是普通标识符,例如SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c)。注意,t1不包含在后台,而且数据库也没有前缀。我错过了什么吗?
EN

回答 1

Stack Overflow用户

发布于 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)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58133838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档