MariaDB执行CREATE TABLE报1064语法错误,求助排查
问题分析与解决
你的SQL语句存在两处语法错误,直接导致了1064报错:
DOUBLE类型定义不符合规范
DOUBLE(100000)的写法错误,DOUBLE类型的正确格式是DOUBLE(M,D)——M代表总位数(最大255),D代表小数位数(最大30)。如果不需要指定精度,直接写DOUBLE即可;若要固定精度(比如保留两位小数),可写DOUBLE(18,2)。另外你填写的100000远超过M的最大值255,这也是触发错误的原因之一。DATE类型默认值设置非法
DATE NOT NULL DEFAULT CURRENT_TIMESTAMP不合法,DATE类型无法使用CURRENT_TIMESTAMP作为默认值。如果需要默认当前日期,可改用CURDATE();或者将字段类型改为TIMESTAMP/DATETIME,这两种类型支持CURRENT_TIMESTAMP作为默认值。
修正后的SQL语句
方案一:保留DATE类型,使用CURDATE()做默认值
CREATE TABLE `balancemapper`.`homedata` ( `cash` DOUBLE(18,2) NULL , `cashExp` VARCHAR(30) NOT NULL DEFAULT 'غير معروف' , `cashDate` DATE NOT NULL DEFAULT CURDATE() , `cashComms` VARCHAR(100) NOT NULL DEFAULT 'لا يوجد' , PRIMARY KEY (`cash`) ) ENGINE = InnoDB;
方案二:改用TIMESTAMP类型存储日期
CREATE TABLE `balancemapper`.`homedata` ( `cash` DOUBLE NULL , `cashExp` VARCHAR(30) NOT NULL DEFAULT 'غير معروف' , `cashDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `cashComms` VARCHAR(100) NOT NULL DEFAULT 'لا يوجد' , PRIMARY KEY (`cash`) ) ENGINE = InnoDB;
内容的提问来源于stack exchange,提问作者Titan
相关产品推荐
相关产品推荐

