我有这条SQL被提供给Mysql。
CREATE TABLE pn_history(
member INT,
action INT,
with INT,
timestamp DATETIME,
details VARCHAR(256)
)
但是作为语法错误回来了。
#1064 - 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 'with INT,
timestamp DATETIME,
details VARCHAR(256)
)' at line 4
为什么会失败?
答案 0 :(得分:2)
MySQL中的'with'和'timestamp'都是reserved words。所以为了让它发挥作用,你需要逃避每一个:
CREATE TABLE pn_history(
member INT,
action INT,
`with` INT,
`timestamp` DATETIME,
details VARCHAR(256)
)
但实际上,您需要考虑更改列identifiers的名称。
详细了解MySQL Reserved Words。
编辑:实际上,TIMESTAMP
不是保留字。文档说:
MySQL允许使用一些关键字 作为不带引号的标识符,因为很多 人们以前用过它们。例子 是以下列表中的那些:
ACTION
BIT
DATE
ENUM
NO
TEXT
- `TIME
TIMESTAMP
所以我猜这意味着同伴压力从保留词列表中取出TIMESTAMP
。哈!
答案 1 :(得分:0)
问题是with
列的名称。将名称更改为withValue
。
CREATE TABLE pn_history(
member INT,
action INT,
withValue INT,
timestamp DATETIME,
details VARCHAR(256)
)
答案 2 :(得分:0)
timestamp是一个关键字(它是mysql中的数据类型),可能会导致问题。
我建议使用其他名称,但如果必须将其命名为timestamp,请尝试使用反引号来引用它。