2014-08-28 140 views
-1

當我嘗試在SQL中創建TABLE時,出現以下錯誤。#1064您的SQL語法錯誤;

phpMyAdmin的版本我用它4.2.7.1它說它是最新的。

任何人都可以幫忙嗎?我找不到錯誤?我特地在與錯誤1064類似的問題,但沒有喜悅

CREATE TABLE 'categories' (
'id' SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, 
'category' VARCHAR(45) NOT NULL, 
PRIMARY KEY ('id'), 
UNIQUE INDEX 'category_UNIQUE' ('category' ASC) 
) ENGINE = InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE 'orders' (
    'id' INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    'users_id' INT UNSIGNED NOT NULL, 
    'transaction_id' VARCHAR(45) NOT NULL, 
    'payment_status' VARCHAR(45) NOT NULL, 
    'payment_amount' INT UNSIGNED NOT NULL, 
    'date_created' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY ('id'), 
    INDEX 'date_created' ('date_created' ASC), 
    INDEX 'transaction_id' ('transaction_id' ASC), 
    CONSTRAINT 'fk_orders_users1' FOREIGN KEY ('id')  
     REFERENCES 'users' ('id') 
     ON DELETE NO ACTION ON UPDATE NO ACTION 
    ) ENGINE = InnoDB DEFAULT CHARSET=utf8; 

    CREATE TABLE 'pages' (
     'id' INT UNSIGNED NOT NULL AUTO_INCREMENT, 
     'categories_id' SMALLINT UNSIGNED NOT NULL, 
     'title' VARCHAR(100) NOT NULL, 
     'description' TINYTEXT NOT NULL, 
     'content' LONGTEXT NULL, 
     'date_created' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
     PRIMARY KEY ('id'), 
     INDEX 'date_created' ('date_created' ASC), 
     INDEX 'fk_pages_categories_idx' ('categories_id') 
      REFERENCES 'categories' ('id') 
      ON DELETE NO ACTION ON UPDATE NO ACTION 

    ) ENGINE = InnoDB DEFAULT CHARSET=utf8; 

    CREATE TABLE 'pdfs' (
     'id' INT UNSIGNED NOT NULL AUTO_INCREMENT, 
     'title' VARCHAR (100) NOT NULL, 
     'description' TINYTEXT NOT NULL, 
     'tmp_name' CHAR(63) NOT NULL, 
     'file_name' VARCHAR(100) NOT NULL, 
     'size' MEDIUMINT UNSIGNED NOT NULL, 
     'date_created' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
     PRIMARY KEY ('id') 
     UNIQUE INDEX 'tmp_name_UNIQUE' ('tmp_name' ASC), 
     INDEX 'date_created' ('date_created' ASC) 
    ) ENGINE = InnoDB DEFAULT CHARSET=utf8; 

    CREATE TABLE ('users') 
    'id' INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    'type' ENUM('member','admin') NOT NULL DEFAULT 'member' 
    'username' VARCHAR(45) NOT NULL, 
    'email' VARCHAR(80) NOT NULL, 
    'pass' VARCHAR(255) NOT NULL, 
    'first_name' VARCHAR (45) NOT NULL, 
    'last_name' VARCHAR (45) NOT NULL, 
    'date_created' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    'date_expires' DATE NOT NULL, 
    'date_modified' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
     ON UPDATE CURRENT_TIMESTAMP, 
     PRIMARY KEY ('id'), 
     UNIQUE INDEX 'username_UNIQUE' ('username' ASC), 
     UNIQUE INDEX 'email_UNIQUE' ('email' ASC), 
     INDEX 'login' ('email' ASC, 'pass' ASC) 
    ) ENGINE = InnoDB DEFAULT CHARSET=utf8; 

MySQL表示:文件

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''categories' (
    'id' SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, 
    'catego' at line 1 
+1

'<>' - 就這樣。 – Strawberry 2014-08-28 09:01:56

回答

1

您需要使用卸下的字段名的單引號字符(我鍵盤上的1鍵旁邊)而不是'引號'。這適用於我:

CREATE TABLE `categories` (
    `id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `category` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE INDEX `category_UNIQUE` (`category` ASC) 
) ENGINE = InnoDB DEFAULT CHARSET=utf8; 
+1

或者,爲了更快樂的生活,完全忽略它們 – Strawberry 2014-08-28 09:02:35

+0

的確!你很少需要它們。 – 2014-08-28 09:04:18

+0

如果您是DBA,那麼可以肯定地說您從不需要它們! – Strawberry 2014-08-28 09:05:01

1

用'替換包圍表名和字段名的字符。

會出現一些更多的語法錯誤 - 例如,在'用戶'表中有不需要的括號。 另外,當您創建'orders'表時,它對用戶有一個外鍵,但用戶稍後會被聲明。

+0

facepalm - 抱歉! – hduncan 2014-08-28 09:35:54