2012-06-13 73 views
-2

我的錯誤:MySQL的「你有一個錯誤的SQL語法」錯誤

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 ')' at line 10

什麼是我的錯誤,該如何解決?

CREATE TABLE login(
user_name VARCHAR(10) NOT NULL DEFAULT", 
password VARCHAR(10) NOT 'NULL DEFAULT", 
email VARCHAR(30) NOT NULL DEFAULT", 
account_type VARCHAR(10) NOT NULL DEFAULT", 
ic INT(10) NOT NULL DEFAULT", 
telephone_no INT(20) NOT NULL DEFAULT", 
pin INT(20) NOT NULL DEFAULT", 
gender VARCHAR(10) NOT NULL DEFAULT", 
shipping_address VARCHAR(100) NOT NULL DEFAULT", 
city VARCHAR(10) NOT NULL DEFAULT", 
state VARCHAR(10) NOT NULL DEFAULT", 
country VARCHAR(10) NOT NULL DEFAULT", 
zip_code INT(10) NOT NULL DEFAULT", 
credit_type VARCHAR(10) NOT NULL DEFAULT", 
credit_number INT(20) NOT NULL DEFAULT", 
cvv2 INT(3) NOT NULL DEFAULT", 
); 
+0

是在「何時出臺SQL複製這個問題? – yankee

+0

儘快什麼主張? –

+0

儘快儘快 – tricor

回答

1

MSSQL這裏開發(所以不知道我是多麼可以幫助您與您的玩具RDBMS),但是從閱讀錯誤信息,你有);前一個額外的,

此外,第三行似乎還有一個額外的',而您使用的DEFAULT的語法沒有意義(更不用說爲INT列設置的空字符串)。

也許:

CREATE TABLE login 
    (
    user_name  VARCHAR(10) NOT NULL DEFAULT '', 
    password   VARCHAR(10) NOT NULL DEFAULT '', 
    email   VARCHAR(30) NOT NULL DEFAULT '', 
    account_type  VARCHAR(10) NOT NULL DEFAULT '', 
    ic    INT(10) NOT NULL DEFAULT 0, 
    telephone_no  INT(20) NOT NULL DEFAULT 0, 
    pin    INT(20) NOT NULL DEFAULT 0, 
    gender   VARCHAR(10) NOT NULL DEFAULT '', 
    shipping_address VARCHAR(100) NOT NULL DEFAULT '', 
    city    VARCHAR(10) NOT NULL DEFAULT '', 
    state   VARCHAR(10) NOT NULL DEFAULT '', 
    country   VARCHAR(10) NOT NULL DEFAULT '', 
    zip_code   INT(10) NOT NULL DEFAULT 0, 
    credit_type  VARCHAR(10) NOT NULL DEFAULT '', 
    credit_number INT(20) NOT NULL DEFAULT 0, 
    cvv2    INT(3) NOT NULL DEFAULT 0 
); 

個人而言,我很擔心,有人問這個問題,有一個叫做credit_number場和password字段不是由一個salt場相匹配,也沒有足夠的SHA1哈希password長。

+2

=且不說各種灑隨機單引號貫穿始終。 – McGarnagle

+0

@dbaseman我無法解析'''作爲'''''。我想這就是他的意圖。也就是說,默認值是一個空字符串。 –

+0

更不用說,一旦個人交易被授權並完成,Visa的字段cvv2(Visa特有的縮寫)被禁止存儲。不能存儲amex,因爲它的卡片識別號碼是4位數(不是3)。 –

0

正確的語法是:

CREATE TABLE login (
    user_name VARCHAR(10) NOT NULL DEFAULT '', 
    password VARCHAR(10) NOT NULL DEFAULT '', 
    email VARCHAR(30) NOT NULL DEFAULT '', 
    account_type VARCHAR(10) NOT NULL DEFAULT '', 
    ic INT(10) NOT NULL DEFAULT 0, 
    telephone_no INT(20) NOT NULL DEFAULT 0, 
    pin INT(20) NOT NULL DEFAULT 0, 
    gender VARCHAR(10) NOT NULL DEFAULT '', 
    shipping_address VARCHAR(100) NOT NULL DEFAULT '', 
    city VARCHAR(10) NOT NULL DEFAULT '', 
    state VARCHAR(10) NOT NULL DEFAULT '', 
    country VARCHAR(10) NOT NULL DEFAULT '', 
    zip_code INT(10) NOT NULL DEFAULT 0, 
    credit_type VARCHAR(10) NOT NULL DEFAULT '', 
    credit_number INT(20) NOT NULL DEFAULT 0, 
    cvv2 INT(3) NOT NULL DEFAULT 0 
); 

我剛纔糾正語法從創建的語法,你應該下載一些工具,如HeidiSQL(或PHPMyAdmin,這樣你就不需要奮鬥,以生成正確的DML語法),並確保你正在尋找什麼默認值,因爲我確定你不需要0作爲所有Integer字段的默認值,而''(空字符串)作爲所有varchar或char字段的默認值。

您是您桌子設計的最佳決策者,我相信您可能不希望所有字段都是NOT NULL,並且其中一些字段也可以具有NULL值。現在,當您允許NULL值時,您不需要爲該字段指定DEFAULT。

相關問題