0

我不明白为什么会失败: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

感谢您的任何想法!

4

3 回答 3

2

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

 CREATE TABLE `Permission` (
`id` INTEGER NOT NULL, 
`name` VARCHAR(255) NOT NULL, 
 PRIMARY KEY (`id`)  
 );
于 2012-07-11T20:29:00.337 回答
1

quickshiftin 的回答很好。
你还应该改变:

`id` INTEGER NOT NULL, 

到:

`id` INT NOT NULL, 
于 2012-07-11T20:32:37.793 回答
1

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

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

ANSI_QUOTES通过为会话启用 sql 模式,可以让 MySQL 允许在对象引用周围使用双引号字符。我建议您仅暂时执行此操作,只是为了定义您的表,然后将其重新设置。

SHOW VARIABLES LIKE 'sql_mode'

SET sql_mode = 'ANSI_QUOTES'

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

SET sql_mode = '' 

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

于 2012-07-11T20:41:44.740 回答