2016-02-20 57 views
-1

我想創建一個過去一直很容易的新表。這次我試圖通過研究我用作我的表的默認排序規則來提高我做事情的質量。看了一下後,我決定utf8mb4_unicode_ci是要走的路。疑難解答MySQL語法錯誤

在這一點上,我創建了一個11行的表。每次我嘗試提交它告訴我,

#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 
') NOT NULL , `password` INT(10000) NOT NULL , `hash` VARCHAR(10000) NOT 
NULL ,' at line 1 

我從來沒有自動生成的SQL給我一個錯誤之前。所以,我認爲這與我選擇的聯盟有關。此外,它似乎有一個接近我的雙重問題。這導致我相信我不能使用我正在使用的排序規則與Double

任何幫助,將不勝感激。

謝謝

CREATE TABLE `skel`.`accounts` (`id` INT(11) NOT NULL AUTO_INCREMENT 
, `username` VARCHAR(255) NOT NULL , `email` VARCHAR(255) NOT NULL , 
`first` VARCHAR(255) NOT NULL , `last` VARCHAR(255) NOT NULL , `phone` 
VARCHAR(50) NOT NULL , `address` VARCHAR(255) NOT NULL , `rate` 
DOUBLE(20) NOT NULL , `password` VARCHAR(40) NOT NULL , `hash` 
VARCHAR(40) NOT NULL , `confirmed` VARCHAR(5) NOT NULL , PRIMARY KEY 
(`id`)) ENGINE = InnoDB; 
+2

雙精度規格是否合法?另外,你認爲'int(10000)'完成了什麼? – Uueerdo

+0

10000 int是一個意外。 – wuno

+0

爲什麼你認爲這個問題與排序有關?整理不會改變MySQL語法規則。 – Barmar

回答

4

DOUBLE(20)是不是有效的數據類型。在MySQL中,double需要指定比例和精度(如果是)。這在documentation中有解釋。

因此,指定類似DOUBLE(20, 5)應該是可以接受的。

此外,INT(10000)沒有任何意義。您不需要長度說明符,但可能打算使用INT(5)(5位精度)。或者,您應該使用DECIMAL()作爲列。

+0

他編輯了這個問題來刪除'INT(10000)'。這顯然是一個錯誤,因爲沒有人會使用整數作爲密碼。 – Barmar