2014-04-23 70 views
2

1064 - 您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本使用附近的'意見正確的語法手冊(‘身份證’INT(10)無符號NOT NULL AUTO_INCREMENT,‘article_i’在行1SQL語法錯誤,找不到它?

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') 
); 

有誰看到?語法錯誤

+5

''id''是一個字符文字(一‘串’)不是列名(標識)。刪除所有這些單引號,你應該沒問題。 –

回答

2

取下單引號試試這個:

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) 
); 

或回試蜱:

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`) 
); 

您會收到此錯誤信息,因爲當您編寫'id'時,它會被視爲字符串而不是您打算使用的列

+1

謝謝,儘可能接受 – Hees1989

+0

@ user3481441: - 你好! –

3

使用反引號代替單個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關鍵詞identifires使用的列名/表名。

這是推薦的方式,因爲它是極不可能的,我們事先知道所有的關鍵字,並最終可能會使用關鍵字作爲我們列/表名的人喜歡你已經在你的CREATE保護 - 諮詢熱點做了time列。

但是你應該避免使用已知的關鍵詞作爲識別。

2

SQL Fiddle刪除單引號,下面的查詢測試:

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) 
); 
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) 
); 
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`) 
); 
1

已使用單引號是撥錯和用於字符串只不是封閉的列名。 Removethat和使用反引號,因爲你有一個像TIME, NAME一些關鍵字:

嘗試:

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`) 
);