2013-11-10 97 views
3

我有一個家庭作業,並試圖找到我的錯誤。我正在MySQL中創建一個表,並且是初學者。請給點建議!MySQL創建表語法錯誤

Create table computer_inventory 
( 
    assetnumber int(10) not null default 「0」, 
    manufacturer varchar(15) not null default ‘ ‘, 
    originalcost decimal(12,2) not null default 「0」, 
    currentvalue decimal(12,2) not null default ‘0’, 
    boughtfrom varchar(20) not null default ‘ ‘, 
    instock tinyint(1) not null default ‘ ‘, 
    currentuser varchar(20) not null default ‘ ‘, 
    userphonenum varchar(13) not null default ‘ ‘, 
    boughtdate datatime not null default ‘ ‘ 
); 

再次,我是新的,所以可能會有很多錯誤。

**EDIT:** 

Create table computer_inventory ( 
     assetnumber int(10) not null default 0, 
    manufacturer varchar(15) not null default ‘ ‘, 
    originalcost decimal(12,2) not null default 0, 
    currentvalue decimal(12,2) not null default 0, 
    boughtfrom varchar(20) not null default ‘ ‘, 
    instock tinyint(1) not null default 0, 
    currentuser varchar(20) not null default ‘ ‘, 
    userphonenum varchar(13) not null default ‘ ‘, 
    boughtdate datetime not null default ‘0000-00=00’ 
); 

我正在使用MySQL 5.6。錯誤提示「錯誤1064(42000):你的SQL語法錯誤;檢查與你的MySQL服務器版本相對應的手冊,在'''附近使用正確的語法,originalcost decimal(12,2)not null default 0,小數點CurrentValue的(1' 第2行「

+2

具體是什麼錯誤? – bjb568

+0

錯誤1064,語法。 – user2975266

+0

整體錯誤是什麼? –

回答

1

有幾件事情錯了... datetime是拼寫錯誤。一些缺省值均列的錯誤的數據類型,太。

Create table computer_inventory 
( 
    assetnumber int(10) not null default 0, 
    manufacturer varchar(15) not null default '', 
    originalcost decimal(12,2) not null default 0, 
    currentvalue decimal(12,2) not null default 0, 
    boughtfrom varchar(20) not null default '', 
    instock tinyint(1) not null default 0, 
    currentuser varchar(20) not null default '', 
    userphonenum varchar(13) not null default '', 
    boughtdate datetime not null default '0000-00-00' 
); 

下一次遇到這種問題時,可以這樣做:嘗試僅使用一列或兩列來創建表,如果這些行沒有錯誤,則刪除表並使用更多列重新創建表如果你得到錯誤,這將會是m更容易分離哪個部分是不正確的。當我測試這個時,我得到了有關錯誤的默認值和類似錯誤的錯誤....例如instock tinyint(1) not null default ' ',這不起作用,因爲您試圖將空字符串設置爲整數列。它不起作用。對於日期時間的默認值,我必須在谷歌上查看它,看看什麼是合適的空日期值。其中一些是反覆試驗,例如移除反引號並用普通引號替換它們。

編輯:這適用於我沒有錯誤...我測試它與sql fiddle它設置爲MySQL 5.5.31。告訴我你得到的確切的錯誤(除非你告訴我們錯誤說什麼,我不可能猜到),你使用的是什麼數據庫及其版本。


這是基於您上面的編輯。你輸入0000-00-00'0000-00=00',你需要使用正常的單引號而不是反引號(我認爲?)。

Create table computer_inventory ( 
    assetnumber int(10) not null default 0, 
    manufacturer varchar(15) not null default ' ', 
    originalcost decimal(12,2) not null default 0, 
    currentvalue decimal(12,2) not null default 0, 
    boughtfrom varchar(20) not null default ' ', 
    instock tinyint(1) not null default 0, 
    currentuser varchar(20) not null default ' ', 
    userphonenum varchar(13) not null default ' ', 
    boughtdate datetime not null default '0000-00-00' 
); 
+0

好吧,幫助!它仍然說我有一個關於原始成本和當前值的語法錯誤。 – user2975266

+0

@ user2975266 - 什麼是錯誤?你在使用什麼數據庫? –

+0

我使用MySQL 5.6。錯誤說「錯誤1064(42000):你有一個錯誤在你的SQL語法中;檢查對應於您的MySQL服務器版本的手冊,以便在'''附近使用正確的語法,ordiginalcost decimal(12,2)not null default 0,currentvalue decimal(1'at line 2「 – user2975266