#1064-您的SQL语法有误;检查与您的MariaDB相对应的手册

时间:2019-10-27 16:03:44

标签: mysql sql mariadb

CREATE TABLE IF NOT EXISTS `tbl_product` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `image` varchar(255) NOT NULL,
    `price` double(11) NOT NULL,
PRIMARY KEY (id)) 
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
  

1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以使用正确的语法   靠近')NOT NULL,PRIMARY KEY(id))ENGINE = InnoDB DEFAULT   第五行的CHARSET = latin1 AUTO_INCRE'

2 个答案:

答案 0 :(得分:1)

尝试使用不带显示位数的浮点数

CREATE TABLE IF NOT EXISTS `tbl_product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `image` varchar(255) NOT NULL,
  `price` double NOT NULL,
 PRIMARY KEY (id)) 
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

对于价格,可能需要固定的十进制长度,因此应使用十进制

CREATE TABLE IF NOT EXISTS `tbl_product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`image` varchar(255) NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (id)) 
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

答案 1 :(得分:0)

您在double specifier中缺少一个值:

`price` double(11) NOT NULL

它需要总位数和小数点后的位数。像这样:

`price` double(11,2) NOT NULL

尽管对于货币价值,您最好改用decimal

`price` decimal(11,2) NOT NULL

因为这使用了更固定的精度。使用double可能会导致浮点算法的工作方式产生意外的计算结果。