MySQL创建含UNICODE与INTEGER类型表时触发1064语法错误求助
解决MySQL表创建的1064语法错误
你的SQL代码存在几个MySQL不支持的语法问题,具体修正点和方案如下:
- MySQL没有
UNICODE或STRING数据类型,存储字符串需使用VARCHAR;若要支持全Unicode字符,需确保表的字符集设置为utf8mb4。 TIMESTAMP类型不能指定(30)这类无效长度参数,MySQL的TIMESTAMP最多支持6位小数精度(如TIMESTAMP(6)),通常直接使用TIMESTAMP即可。
修正后的SQL代码:
CREATE TABLE survey( id INTEGER(15) NOT NULL AUTO_INCREMENT, -- 可选添加AUTO_INCREMENT实现主键自增 `name` VARCHAR(65) NOT NULL, parentId INTEGER(15) NOT NULL, createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 可选添加默认值,自动记录创建时间 modifiedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 可选设置更新时自动刷新时间 surveyUrl VARCHAR(100) NOT NULL, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
补充说明:
- 新增
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4,确保表使用支持全Unicode的字符集,避免特殊字符乱码。 - 给
createdAt和modifiedAt添加的默认规则是业务开发中的常见最佳实践,可根据实际需求调整。
内容的提问来源于stack exchange,提问作者Clay Campbell
相关产品推荐
相关产品推荐

