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 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便使用接近的正确语法')NOT NULL,PRIMARY KEY>(
id
))ENGINE = InnoDB AUTO_INCREMENT = 8'在第1行
我没有得到什么语法错误,我检查了SQL纠正器?
MySQL版本 - 5.5.35-0ubuntu0.13.10.2
答案 0 :(得分:1)
DOULE
需要两个参数
`shares` DOUBLE(M,D) NOT NULL
D是小数点后面的位数,M是总位数。有关详细信息,请查看this。
当然你也可以使用这个
`shares` DOUBLE NOT NULL
指示sql引擎采用默认值。
答案 1 :(得分: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.9999
。 MySQL
在存储值时执行舍入,因此如果您将999.00009
插入FLOAT(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