以下查询获取#1064错误?

时间:2014-04-11 08:42:03

标签: mysql

 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

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.9999MySQL在存储值时执行舍入,因此如果您将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