Linux: DB: MariaDB: 10.6 升级导致的兼容问题

发布时间:2023年12月23日

https://mariadb.com/kb/en/select-offset-fetch/
https://jira.mariadb.org/browse/MDEV-23908
https://mariadb.com/kb/en/reserved-words/
这里有提到添加了新的语法,以迎合SQL-2008的标准,引入了一个关键字offset。

这个关键字的引入可能导致已有数据库表字段的问题,假如在升级之前,某一个数据库表里的字段名称是offset,这时候在新的10.6版本的话,就会认为是一个关键字,导致语法上的错误。

https://github.com/doctrine/dbal/pull/5292
下面这个链接给出了一个解决方法,就是在之前的sql语句里,将offset用单引号括起来。
另外一个方法就是修改列名。就看哪一个实现比较方便了。

这种问题怎么避免呢?看着是没有什么太好的办法。谁知道SQL还会添加什么关键字进来!所以在实际工作中,我们经常可以看到很多工具生成的sql语句都是字段加引号的情况;因为不知道字段名称是不是关键字,为了通用性,所有的都加引号。下面两个链接是mysql关于预留关键字加引号的说明,可以参考。
https://dev.mysql.com/doc/refman/8.0/en/keywords.html
https://dev.mysql.com/doc/refman/8.0/en/identifiers.html
“An identifier may be quoted or unquoted. If an identifier contains special characters or is a reserved word, you must quote it whenever you refer to it. (Exception: A reserved word that follows a period in a qualified name must be an identifier, so it need not be quoted.) Reserved words are listed at Section 9.3, “Keywords and Reserved Words”. ”

文章来源:https://blog.csdn.net/qq_36428903/article/details/134958778
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。