2014-04-11 70 views
0
CREATE TABLE IF NOT EXISTS `pset7`.`portfolio`(
`id` int(10) unsigned NOT NULL, 
`symbol` varchar(12) NOT NULL, 
`shares` double(50) NOT NULL, 
PRIMARY KEY (`id`) 
)ENGINE=InnoDB; 

這是錯誤:以下查詢獲得#1064錯誤?

ERROR : #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, PRIMARY KEY >(id))ENGINE=InnoDB AUTO_INCREMENT=8' at line 1

我沒有得到什麼語法錯誤是,我對SQL校正檢查?

MySQL版本 - 5.5.35-0ubuntu0.13.10.2

+0

嘗試double'後'移除支架。 '股票雙非空,' – Vesper

+0

@Vesper,謝謝! – amitfreeman

回答

1

DOULE需要兩個參數

`shares` DOUBLE(M,D) NOT NULL 

d是可以是小數點後的位數,M是總數數字。欲瞭解更多信息,請查詢this了。

Ofcourse,你也可以使用這個

`shares` DOUBLE NOT NULL 

,指示對SQL引擎取默認值。

0

MySQL permits a nonstandard syntax:FLOAT(M,D) or REAL(M,D) or DOUBLE PRECISION(M,D)。在這裏,「(M,D)」意思是可以存儲總共高達M位的值,其中D位可以在小數點後面。例如,定義爲FLOAT(7,4)的列在顯示時看起來像-999.9999MySQL進行存儲值的時候,所以如果你插入999.00009FLOAT(7,4)列舍入,近似結果是999.0001

因此,與

CREATE TABLE `portfolio` (
    `id` int(10) NOT NULL, 
    `symbol` varchar(12) DEFAULT NULL, 
    `shares` double(10,5) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

嘗試參見:http://dev.mysql.com/doc/refman/5.6/en/floating-point-types.html