向MySQL添加表会不断抛出错误

向MySQL添加表会不断抛出错误,mysql,Mysql,遵循web开发教程。下面是SQL代码 CREATE TABLE 'users_relationships' ( 'users_relationship_id' INT(10) NOT NULL, 'from_user_id' INT(10) NOT NULL, 'to_user_id' INT(10) unsigned NOT NULL, 'users_relationship_type' VARCHAR(10) NOT NULL, 'users_relationship_timestamp'

遵循web开发教程。下面是SQL代码

CREATE TABLE 'users_relationships' (
'users_relationship_id' INT(10) NOT NULL,
'from_user_id' INT(10) NOT NULL,
'to_user_id' INT(10) unsigned NOT NULL,
'users_relationship_type' VARCHAR(10) NOT NULL,
'users_relationship_timestamp' DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ('users_relationship_id'),
INDEX 'from_user_id' ('from_user_id'),
INDEX 'to_user_id' ('to_user_id'),
INDEX 'from_user_id_to_user_id' ('from_user_id', 'to_user_id'),
INDEX 'from_user_id_to_user_id_users_relationship_type' ('from_user_id', 'to_user_id', 'users_relationship_type'));
无论何时运行它,我都会得到以下错误:

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“用户关系”附近使用的正确语法( “用户关系id”INT(10)不为空, 第1行的“from_u2;”


我尝试了多次更改,但它始终给我相同的错误。代码直接来自于本书。有什么想法吗?

您不需要反勾号或单引号。只需在正文上施加压力。但是单引号是等待发生的彻头彻尾的语法错误

CREATE TABLE users_relationships (
users_relationship_id INT(10) NOT NULL,
from_user_id INT(10) NOT NULL,
to_user_id INT(10) unsigned NOT NULL,
users_relationship_type VARCHAR(10) NOT NULL,
users_relationship_timestamp DATETIME not null,
PRIMARY KEY (users_relationship_id),
INDEX from_user_id(from_user_id),
INDEX to_user_id (to_user_id),
INDEX from_user_id_to_user_id (from_user_id, to_user_id),
INDEX from_user_id_to_user_id_users_relationship_type (from_user_id, to_user_id, users_relationship_type)
);

反勾号很可爱。但只有当名称违反保留字时才需要。虽然它们是由创建表转储的工具生成的,但除非你真的讨厌你的左小指,否则为什么还要麻烦它们呢。这只是我的意见。

你不需要反勾号或单引号。只需要在主体上施加压力。但是单引号是向下的ht语法错误正在等待发生

CREATE TABLE users_relationships (
users_relationship_id INT(10) NOT NULL,
from_user_id INT(10) NOT NULL,
to_user_id INT(10) unsigned NOT NULL,
users_relationship_type VARCHAR(10) NOT NULL,
users_relationship_timestamp DATETIME not null,
PRIMARY KEY (users_relationship_id),
INDEX from_user_id(from_user_id),
INDEX to_user_id (to_user_id),
INDEX from_user_id_to_user_id (from_user_id, to_user_id),
INDEX from_user_id_to_user_id_users_relationship_type (from_user_id, to_user_id, users_relationship_type)
);

反勾号很可爱。但只有当名称违反保留字时才需要。虽然它们是由创建表转储的工具生成的,但除非你真的讨厌你的左小指,否则为什么还要麻烦它们呢。这只是我的意见。

你不需要反勾号或单引号。只需要在主体上施加压力。但是单引号是向下的ht语法错误正在等待发生

CREATE TABLE users_relationships (
users_relationship_id INT(10) NOT NULL,
from_user_id INT(10) NOT NULL,
to_user_id INT(10) unsigned NOT NULL,
users_relationship_type VARCHAR(10) NOT NULL,
users_relationship_timestamp DATETIME not null,
PRIMARY KEY (users_relationship_id),
INDEX from_user_id(from_user_id),
INDEX to_user_id (to_user_id),
INDEX from_user_id_to_user_id (from_user_id, to_user_id),
INDEX from_user_id_to_user_id_users_relationship_type (from_user_id, to_user_id, users_relationship_type)
);

反勾号很可爱。但只有当名称违反保留字时才需要。虽然它们是由创建表转储的工具生成的,但除非你真的讨厌你的左小指,否则为什么还要麻烦它们呢。这只是我的意见。

你不需要反勾号或单引号。只需要在主体上施加压力。但是单引号是向下的ht语法错误正在等待发生

CREATE TABLE users_relationships (
users_relationship_id INT(10) NOT NULL,
from_user_id INT(10) NOT NULL,
to_user_id INT(10) unsigned NOT NULL,
users_relationship_type VARCHAR(10) NOT NULL,
users_relationship_timestamp DATETIME not null,
PRIMARY KEY (users_relationship_id),
INDEX from_user_id(from_user_id),
INDEX to_user_id (to_user_id),
INDEX from_user_id_to_user_id (from_user_id, to_user_id),
INDEX from_user_id_to_user_id_users_relationship_type (from_user_id, to_user_id, users_relationship_type)
);

Backticks很可爱。但是只有当名称违反保留字时才需要。虽然它们是由创建表转储的工具生成的,但是为什么还要麻烦它们呢,除非你真的讨厌你的左小指。这就是我的意见。

如果你想使用MySQL引号,你需要使用`,否则MySQL会搞砸并认为有som创建e字符串而不是表列(通常对于列名,不使用',否则MySQL会认为字符串用于数据选择)


这里是正在工作的SQLFIDLE

如果您想使用MySQL引号,您需要使用`,否则MySQL会搞砸,认为创建了一些字符串而不是表列(通常对于列名,您不使用',否则MySQL会认为正在使用字符串进行数据选择)


这里是正在工作的SQLFIDLE

如果您想使用MySQL引号,您需要使用`,否则MySQL会搞砸,认为创建了一些字符串而不是表列(通常对于列名,您不使用',否则MySQL会认为正在使用字符串进行数据选择)


这里是正在工作的SQLFIDLE

如果您想使用MySQL引号,您需要使用`,否则MySQL会搞砸,认为创建了一些字符串而不是表列(通常对于列名,您不使用',否则MySQL会认为正在使用字符串进行数据选择)


下面是一个有效的SQLFIDLE

首先,你应该用反勾号替换所有的单引号

CREATE TABLE `users_relationships` (
`users_relationship_id` INT(10) NOT NULL,
`from_user_id` INT(10) NOT NULL,
`to_user_id` INT(10) unsigned NOT NULL,
`users_relationship_type` VARCHAR(10) NOT NULL,
`users_relationship_timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`users_relationship_id`),
INDEX `from_user_id` (`from_user_id`),
INDEX `to_user_id` (`to_user_id`),
INDEX `from_user_id_to_user_id` (`from_user_id`, `to_user_id`),
INDEX `from_user_id_to_user_id_users_relationship_type` (`from_user_id`, `to_user_id`, `users_relationship_type`));
第二个u不能有
DATETIME默认当前时间戳

DATETIME默认值“”

或者
TIMESTAMP DEFAULT\u当前时间戳

第一个u应该用反勾号替换所有单引号

CREATE TABLE `users_relationships` (
`users_relationship_id` INT(10) NOT NULL,
`from_user_id` INT(10) NOT NULL,
`to_user_id` INT(10) unsigned NOT NULL,
`users_relationship_type` VARCHAR(10) NOT NULL,
`users_relationship_timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`users_relationship_id`),
INDEX `from_user_id` (`from_user_id`),
INDEX `to_user_id` (`to_user_id`),
INDEX `from_user_id_to_user_id` (`from_user_id`, `to_user_id`),
INDEX `from_user_id_to_user_id_users_relationship_type` (`from_user_id`, `to_user_id`, `users_relationship_type`));
第二个u不能有
DATETIME默认当前时间戳

DATETIME默认值“”

或者
TIMESTAMP DEFAULT\u当前时间戳

第一个u应该用反勾号替换所有单引号

CREATE TABLE `users_relationships` (
`users_relationship_id` INT(10) NOT NULL,
`from_user_id` INT(10) NOT NULL,
`to_user_id` INT(10) unsigned NOT NULL,
`users_relationship_type` VARCHAR(10) NOT NULL,
`users_relationship_timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`users_relationship_id`),
INDEX `from_user_id` (`from_user_id`),
INDEX `to_user_id` (`to_user_id`),
INDEX `from_user_id_to_user_id` (`from_user_id`, `to_user_id`),
INDEX `from_user_id_to_user_id_users_relationship_type` (`from_user_id`, `to_user_id`, `users_relationship_type`));
第二个u不能有
DATETIME默认当前时间戳

DATETIME默认值“”

或者
TIMESTAMP DEFAULT\u当前时间戳

第一个u应该用反勾号替换所有单引号

CREATE TABLE `users_relationships` (
`users_relationship_id` INT(10) NOT NULL,
`from_user_id` INT(10) NOT NULL,
`to_user_id` INT(10) unsigned NOT NULL,
`users_relationship_type` VARCHAR(10) NOT NULL,
`users_relationship_timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`users_relationship_id`),
INDEX `from_user_id` (`from_user_id`),
INDEX `to_user_id` (`to_user_id`),
INDEX `from_user_id_to_user_id` (`from_user_id`, `to_user_id`),
INDEX `from_user_id_to_user_id_users_relationship_type` (`from_user_id`, `to_user_id`, `users_relationship_type`));
第二个u不能有
DATETIME默认当前时间戳

DATETIME默认值“”

TIMESTAMP DEFAULT CURRENT\u TIMESTAMP

不要在列名周围加引号不要在列名周围加引号不要在列名周围加引号不要在列名周围加引号刚刚使用SQL PRO运行此操作,出现以下错误,“用户关系\u TIMESTAMP”的默认值无效SQL PRO不支持“CURRENT_TIMESTAP”其他问题上的人似乎建议将NOW()作为默认值,该值将自动转换为时间戳。我对SQL PRO不是很有经验,但你可以试试。我在这里发现:“刚刚使用SQL PRO运行了此程序,出现以下错误,'users\u relationship\u timestamp'的默认值无效SQL PRO不支持“CURRENT\u TIMESTAP”其他问题的用户现在似乎在建议()作为默认值,它将自动转换为时间戳。我对SQL PRO不是很有经验,但您可以尝试一下。我在这里发现:“刚刚使用SQL PRO运行了这个,给出了以下错误,'users\u relationship\u timestamp'的默认值无效SQL PRO不支持“CURRENT\u TIMESTAP”“其他问题上的人似乎建议将NOW()作为默认值,该值将自动转换为时间戳。我对SQL PRO不是很有经验,但你可以试试。我在这里发现:“刚刚使用SQL PRO运行了此程序,出现以下错误,'users\u relationship\u timestamp'的默认值无效SQL PRO不支持“CURRENT\u TIMESTAP”其他问题的用户现在似乎在建议()作为默认值,它将自动转换为时间戳。我对SQL PRO不是很有经验,但您可以尝试一下。我在这里发现:“我相信backticks只是“接近严格的标准”。不错,我更喜欢总是使用它们。