创建简单表时出错

时间:2012-07-11 20:26:54

标签: mysql sql

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

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

感谢您的任何想法!

3 个答案:

答案 0 :(得分:2)

您使用的引号错误。您应该对表名和列使用“标记不是”标记。

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

答案 1 :(得分:1)

quickshiftin的答案很好。
你也应该改变:

`id` INTEGER NOT NULL, 

为:

`id` INT NOT NULL, 

答案 2 :(得分:1)

MySQL通常使用反引号字符来包含对象引用,正如quickshiftin的回答所说。

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

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

SHOW VARIABLES LIKE 'sql_mode'

SET sql_mode = 'ANSI_QUOTES'

在设置sql_mode变量之前,您需要记下当前设置,以便在创建表格后将其设置回来。

SET sql_mode = '' 

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