我的MySQL创建表语句存在何种语法错误?
你的MySQL建表语句的语法错误分析
嘿,我来帮你定位这条SQL里的问题,主要有两个点需要注意:
核心语法错误:DOUBLE类型的精度定义错误
MySQL中DOUBLE类型如果要指定精度,必须遵循DOUBLE(M, D)的格式——其中M是整数+小数部分的总位数,D是小数部分的位数。你写的double(100)只指定了总位数,缺少小数位数参数,这直接触发了#1064语法错误。
修正示例:如果需要保留2位小数,改成double(100, 2);如果不需要指定精度,也可以直接写DOUBLE。冗余约束:主键的唯一键重复定义
你已经将id设为PRIMARY KEY,而MySQL的主键本身就自带非空+唯一的约束,所以后面的UNIQUE KEY idUnique (id)完全是多余的,删掉它不会影响功能,还能简化表结构。
修正后的完整SQL语句
CREATE TABLE IF NOT EXISTS `creditors` ( `id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(50) NOT NULL, `route` varchar(255) NOT NULL, `mobile` int(10) NOT NULL, `credit_amount` double(100,2) NOT NULL, `start_date` date NOT NULL, `due_date` date NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

