为了工作,我的 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 中的 DEFAULT 上的“缺少右括号”
“Declare @TableName”优于“Create Table TableName”有啥好处?
HiveQL/SQL:CREATE TABLE AS SELECT (CTAS) 和 CREATE EXTERNAL TABLE + INSERT INTO 有啥区别?