mysql - SQL语法错误,找不到?

标签 mysql sql ddl

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 ''comments' 附近使用的正确语法 ('id' int(10) unsigned NOT NULL AUTO_INCRMENT, 'article_i' at line 1

CREATE TABLE IF NOT EXISTS 'comments' (
    'id' int(10) unsigned NOT NULL AUTO_INCREMENT,
    'article_id' int(10) NOT NULL,
    'comment' varchar(45) NOT NULL,
    'time' datetime NOT NULL,
    'name' varchar(45) NOT NULL,
    'email' varchar(45) NOT NULL,
    PRIMARY KEY ('id'),
    KEY 'fk_comments_article'('article_id')
);

有人看到语法错误吗?

最佳答案

使用反引号代替单个 qoutes。单个 qoutes 用于字符串文字。

CREATE TABLE IF NOT EXISTS `comments` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `article_id` int(10) NOT NULL,
    `comment` varchar(45) NOT NULL,
    `time` datetime NOT NULL,
    `name` varchar(45) NOT NULL,
    `email` varchar(45) NOT NULL,
    PRIMARY KEY (`id`),
    KEY fk_comments_article(`article_id`)
);

反引号`用于使标识符能够用作列名/表名(如果它们恰好是 MySQL 中的关键字)。

这是推荐的方式,因为我们不太可能事先知道所有关键字,并且最终可能会使用其中一个关键字作为列/表的名称,就像您对列 time 所做的那样 在您的 CREATE 中声明。

但是您应该避免使用您所知的关键字 identifires。

关于mysql - SQL语法错误,找不到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243763/

相关文章:

mysql - 为什么导入的数据库在 phpmyadmin 中较小?

sql-server - SQL Server 与 Oracle DBMS_METADATA.GET_DDL 并行吗?

php - MySQL全文搜索 boolean 模式混淆

sql - 遍历 rails 中的列

sql - 我应该如何在数据库中记录 'all' 组可见的项目/产品?

sql - 使用 REST API 的 Linq to SQL?

postgresql - ALTER COLUMN TYPE varchar(N) 是否重写 Postgres 9.6 中的表?

SQL创建弱实体表

php - MySQL随机分配第二个端口/PHP

mysql - 在 mysql 中更新查询以获取新列