为了工作,我的 CREATE TABLE 中缺少啥? mysql 8.X

Posted

技术标签:

【中文标题】为了工作,我的 CREATE TABLE 中缺少啥? mysql 8.X【英文标题】: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 这个怎么样:***.com/a/61411216/10498828?你会回答多少次同一个问题? 【参考方案1】:

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

改用变体,例如ranking

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

哦,谢谢它也在工作!我用键盘输入 ` 字符是很不寻常的。

以上是关于为了工作,我的 CREATE TABLE 中缺少啥? mysql 8.X的主要内容,如果未能解决你的问题,请参考以下文章

在Create Table命令SQL中缺少右括号

CREATE TABLE 中的 DEFAULT 上的“缺少右括号”

“Declare @TableName”优于“Create Table TableName”有啥好处?

为了在代码中创建 UIGridLayout,我缺少啥?

HiveQL/SQL:CREATE TABLE AS SELECT (CTAS) 和 CREATE EXTERNAL TABLE + INSERT INTO 有啥区别?

MySQL create table as与create table like对比