错误 #1064 MySQL ''accesslogh' 附近的语法有问题

Error #1064 MySQL Something is wrong in your syntax near '' accesslogh '

我收到这个 MySQL 错误 1064:

# 1064 - Something is wrong in your syntax near '' accesslogh '(
id INT (30) PRIMARY KEY AUTO_INCREMENT NOT NULL,
nam ... 'on line 1

当我运行

CREATE TABLE 'accesslogh' (
id INT(30) PRIMARY KEY AUTO_INCREMENT NOT NULL, 
name VARCHAR(255), 
result VARCHAR(255), 
type VARCHAR(255), 
code VARCHAR(255), 
epoch INT(30), 
timestamp DATE DEFAULT CURRENT_TIMESTAMP);

我知道这是一个语法错误,但我尝试按照正确的理论解决它,但我无法解决它。

删除 table 名称周围的引号。

CREATE TABLE accesslogh (
id INT(30) PRIMARY KEY AUTO_INCREMENT NOT NULL, 
name VARCHAR(255), 
result VARCHAR(255), 
type VARCHAR(255), 
code VARCHAR(255), 
epoch INT(30), 
timestamp DATE DEFAULT CURRENT_TIMESTAMP);

您将反引号 ` 与单引号 ' 混淆了。在 SQL 中,单引号用于字符串文字,在 MySQL 中,反引号用于表示带引号的标识符,以允许您使用特殊字符,白色 space 和保留字身份标识。您可能打算这样做:

CREATE TABLE `accesslogh` (
id INT(30) PRIMARY KEY AUTO_INCREMENT NOT NULL, 
name VARCHAR(255), 
result VARCHAR(255), 
type VARCHAR(255), 
code VARCHAR(255), 
epoch INT(30), 
timestamp DATE DEFAULT CURRENT_TIMESTAMP);

虽然您的示例不需要它,但如果您的查询将在其他代码中生成,那么了解它是一个很好的做法。


这实际上仅适用于 MySQL,其他 SQL DBMS 倾向于使用方括号 [ ] 来括起使用保留字或其他不允许使用的字符的标识符。