【问题标题】:What is missing in my CREATE TABLE in order to work? mySQL 8.X为了工作,我的 CREATE TABLE 中缺少什么? mysql 8.X
【发布时间】:2021-09-04 00:34:09
【问题描述】:

我使用 mySQL 5.x 进行编码,现在我切换到 8.x 版本,我很困惑。 这个短代码有什么问题?

[我的代码截图]

错误信息

"您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 'rank VARCHAR(50) NOT NULL、学科 VARCHAR(1)、yr_start INT(11) 附近使用的正确语法, ' 在第 3 行"

【问题讨论】:

  • 请将问题中的代码作为text
  • 声明的副本绝对不能解释为什么这在 MySQL 5.7 中有效,但在 8+ 中无效。
  • @GordonLinoff 这个怎么样:stackoverflow.com/a/61411216/10498828?你会回答多少次同一个问题?

标签: mysql sql popsql


【解决方案1】:

rank is now a MySQL reserved word。用于rank()窗口函数

改用变体,例如ranking

这些函数是在 MySQL 8 中引入的。

【讨论】:

    【解决方案2】:

    如果由于某种原因无法更改架构,您也可以使用带引号的标识符。 MySQL 中默认使用反引号字符,例如:

    create table foo (
       `rank` varchar(50)
    ) 
    

    如果您想在不修改应用程序逻辑的情况下从旧 mysql 版本移植预先存在的架构,应该可以使用。

    【讨论】:

    • 哦,谢谢它也在工作!我用键盘输入 ` 字符是很不寻常的。
    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多