2013-03-31 60 views
4

这是一些简单的代码,但我不知道为什么我不能用这个词作为表在列名称中使用保留字

CREATE TABLE IF NOT EXISTS users(
key INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
username VARCHAR(50) NOT NULL, 
); 

我意识到我不能使用“的实体关键“,如果我使用密钥mysql将要求我检查语法,但如果我使用”id“或任何其他人将创建表。

任何人都知道我可以如何创建实体名称到关键?不是重要的,因为我可以使用id而不是key,但是因为我发现这个错误,我想知道是否有办法让它工作。

+1

我强烈建议您查找比SQL保留字更有意义的名称。也许'UserId'会是一个好名字 - 对于偶然的观察者来说,它更具信息量。 –

+0

可能的重复[为什么我不能在MySQL中使用某些单词作为表/列名?](http://stackoverflow.com/questions/23446377/why-cant-i-use-certain-words-as-table -column-names-in-mysql) – Dukeling

回答

13

如果您愿意,仍然可以使用key。只是反向包装它,

CREATE TABLE IF NOT EXISTS users 
(
    `key` INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    username VARCHAR(50) NOT NULL, 
); 

但作为劝告,不要使用任何保留的关键字,以避免将来的问题。 :)

+0

好的,谢谢让我试试这个^ _^ – Tsuna

+0

好的工作......我试过\认为这可能是如何做到这一点,因为在PHP \转义字符哈哈....非常感谢^ _ ^每天都会学到新东西 – Tsuna

+0

不客气':D' –

2

结尾下划线

简单的解决方案:添加尾随下划线到每一个名字。

SQL规范SQL:2011明确承诺永远不会在任何关键字上使用尾随下划线,无论是现在还是未来。

实施例:key_

参见my answer到一个类似的问题,H2数据库列名被保留字