Mysql 创建简单表时出错

Mysql 创建简单表时出错,mysql,sql,Mysql,Sql,我不明白为什么会失败:哦 CREATE TABLE "Permission" ( "id" INTEGER NOT NULL, "name" VARCHAR(255) NOT NULL, PRIMARY KEY ("id") ); 信息 Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax

我不明白为什么会失败:哦

CREATE TABLE "Permission" (
"id" INTEGER NOT NULL,
"name" VARCHAR(255) NOT NULL,
PRIMARY KEY ("id") 
);
信息

Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"Permission" (
"id" INT NOT NULL,
"name" VARCHAR(255) NOT NULL,
PRIMARY KEY ("id' at line 1

谢谢你的建议

您使用了错误的引用字符。表名和列应使用“marks not”标记

 CREATE TABLE `Permission` (
`id` INTEGER NOT NULL, 
`name` VARCHAR(255) NOT NULL, 
 PRIMARY KEY (`id`)  
 );

您使用了错误的引号字符。表名和列应使用'marks not'标记

 CREATE TABLE `Permission` (
`id` INTEGER NOT NULL, 
`name` VARCHAR(255) NOT NULL, 
 PRIMARY KEY (`id`)  
 );

quickshiftin的答案很好。
您还应该更改:

`id` INTEGER NOT NULL, 
致:


quickshiftin的答案很好。
您还应该更改:

`id` INTEGER NOT NULL, 
致:


正如quickshiftin的回答所说,MySQL通常使用backtick字符来括起对象引用

但使用双引号并不是真的“错误”,只是MySQL的默认行为是不允许以这种方式使用双引号

通过为会话启用
ANSI_QUOTES
sql模式,MySQL可以允许在对象引用周围使用双引号字符。我建议您只是暂时这样做,只是为了定义表,然后将其设置回原来的状态

SHOW VARIABLES LIKE 'sql_mode'

SET sql_mode = 'ANSI_QUOTES'
在设置sql_模式变量之前,您需要注意当前设置,以便在创建表后将其设置回原位

SET sql_mode = '' 

也可以在数据库级别设置此变量,但我以前从未见过这样做。我只是(暂时)覆盖了会话级别的默认值,用于导入使用双引号的SQL表定义。

MySQL通常使用倒勾字符来括起对象引用,正如QuickShift的回答所说

但使用双引号并不是真的“错误”,只是MySQL的默认行为是不允许以这种方式使用双引号

通过为会话启用
ANSI_QUOTES
sql模式,MySQL可以允许在对象引用周围使用双引号字符。我建议您只是暂时这样做,只是为了定义表,然后将其设置回原来的状态

SHOW VARIABLES LIKE 'sql_mode'

SET sql_mode = 'ANSI_QUOTES'
在设置sql_模式变量之前,您需要注意当前设置,以便在创建表后将其设置回原位

SET sql_mode = '' 

也可以在数据库级别设置此变量,但我以前从未见过这样做。我只(暂时)覆盖了会话级别的默认值,用于导入使用双引号的SQL表定义。

谢谢,它可以工作!(直到6分钟过去,网站才允许我接受答案)。有趣的是,这段代码是由一个可视化设计工具生成的:(可视化设计工具对于高级应用程序来说是很好的,但是在运行SQL之前,手动查看SQL总是值得的;其中一些工具偶尔会吐出一些愚蠢的SQL。可视化设计工具可能希望MySQL会话将
设置SQL\u模式='ANSI\u QUOTES'
,这样就允许在对象refe周围使用双引号谢谢你,这很有效!(网站直到6分钟后才让我接受答案)。有趣的是,这段代码是由一个可视化设计工具生成的:(可视化设计工具对于高级应用程序来说是很好的,但是在运行SQL之前,手动查看SQL总是值得的;其中一些工具偶尔会吐出一些愚蠢的SQL。可视化设计工具可能希望MySQL会话将
设置SQL\u模式='ANSI\u QUOTES'
,这样就允许在对象refe周围使用双引号非常有用!非常感谢你的回答非常有用!非常感谢你的回答