首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql@8升级后不正确的数据库名称``

mysql@8升级后不正确的数据库名称``
EN

Database Administration用户
提问于 2022-09-30 12:59:45
回答 2查看 107关注 0票数 4

在MySQL升级之后,我们遇到了一个巨大的变化,因为我们有一些非常奇怪的查询,比如:

代码语言:javascript
运行
复制
use somedatabase;
SELECT * FROM `Table` where ``.`Table`.`id` = 1

对于MySQL@5,此查询运行时没有任何问题,使用somedatabase作为实际数据库。

对于MySQL@8,相同的查询会抛出一个Incorrect database name ''

我在升级文档中没有发现任何提到这种行为变化的东西。是否有任何方法强制MySQL@8将空数据库名称视为当前选定的名称?

(是的,我知道最好的办法是解决这些问题)

EN

回答 2

Database Administration用户

回答已采纳

发布于 2022-11-03 15:36:29

如果这个问题与版本有关,那么MySQL的开发人员似乎已经“修复”了(在您的例子中是“坏的”)。

如果您查阅了版本MySQL 8.0中的标识符限定符文档,然后切换到版本5.7的相同文档,那么您可以找到以下信息:

..。语法.tbl_name是指默认数据库中的表tbl_name。注这个语法在MySQL 5.7.20中被废弃;在未来的MySQL._版本中删除它.

看起来,在标识符Qualifers中有一个默认数据库的选项被移除在5.7.20和当前的8.0版本之间。您可能会在发布说明5.7x中找到其中一个版本。再一次你可能找不到它。

结论

MySQL事先警告说,这个特性将被删除。现在它似乎已经被有效地删除了,没有返回到< 5.7.19语法的选项。

票数 2
EN

Database Administration用户

发布于 2022-09-30 17:05:05

代码语言:javascript
运行
复制
use database;
    ^^^^^^^^  -- some name you made up

SELECT * FROM `Table` where ``.`Table`.`id` = 1
                            ^^  -- not valid database name

请注意这些用于引用列的语法:

代码语言:javascript
运行
复制
db_name.table_name.col_name
        table_name.col_name
                   col_name

在每种情况下,backtics ()可以可选地围绕每个组件。当名称也是关键字时,回溯是很重要的。新版本添加新关键字,从而使在添加回溯之前不具有回溯功能的旧脚本无效。

至于升级时是怎么发生的,我不知道。你真的有一个关键字" database“的数据库吗?您以前是否有数据库名称的回溯?是什么脚本进行了升级?

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

https://dba.stackexchange.com/questions/317646

复制
相关文章

相似问题

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