错误 #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 倾向于使用方括号 [ ]
来括起使用保留字或其他不允许使用的字符的标识符。
我收到这个 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 倾向于使用方括号 [ ]
来括起使用保留字或其他不允许使用的字符的标识符。