PhpMyAdmin创建表时触发MySQL error 1064语法错误如何解决
问题原因
- 核心语法错误来自
DOUBLE类型的定义不符合MySQL规范:MySQL中浮点类型DOUBLE如果要指定长度,必须传入两个参数,格式为DOUBLE(总位数, 小数位数),你只写了DOUBLE(20)缺少小数位参数,直接触发语法报错,报错指向的第8行就是第一个出现DOUBLE(20)定义的位置。 - 额外存在不规范写法:
INT(100)的定义不合理,INT类型的存储范围是固定的,括号内的数字仅代表显示宽度,最大有效值为255,写100没有实际意义,部分高版本MySQL还会抛出警告。
解决方法
你可以根据自己的业务需求二选一修改DOUBLE的定义:
- 方案1:不需要固定小数精度,直接省略
DOUBLE的参数,写法为DOUBLE NOT NULL - 方案2:需要固定小数精度,比如金额类场景保留2位小数,写法为
DOUBLE(20,2) NOT NULL
同时建议把INT(100)简化为INT,避免不必要的警告。
修正后的完整建表语句(以金额类场景保留2位小数为例)
CREATE TABLE `cuenta` ( `id` INT NOT NULL AUTO_INCREMENT, `nombre` VARCHAR(100) NOT NULL, `institucion` INT NOT NULL, `fechaApertura` DATETIME NOT NULL, `fechaCierre` DATETIME NOT NULL, `moneda` VARCHAR(100) NOT NULL, `saldoDisponible` DOUBLE(20,2) NOT NULL, `saldoInicial` DOUBLE(20,2) NOT NULL, `saldoPagado` DOUBLE(20,2) NOT NULL, `saldoRestante` DOUBLE(20,2) NOT NULL, `pago` DOUBLE(20,2) NOT NULL, PRIMARY KEY(`id`) ) ENGINE = INNODB;
内容的提问来源于stack exchange,提问作者Allgod
相关产品推荐
相关产品推荐

