MySQL 5.5执行CREATE TABLE语句报1064语法错误求解决
问题解决:MySQL 5.5 CREATE TABLE语法错误修复
错误原因分析
- datetime精度不支持:MySQL 5.5版本不支持
datetime(1)这种带精度的时间类型定义,该特性是从MySQL 5.6才开始引入的,这正是错误提示指向的核心语法问题。 - 标识符语法错误:索引和外键名称
sa_user_re[ort中包含非法字符[,会导致SQL解析失败,需改为合法的字母+下划线组合。
修正后的完整SQL语句
CREATE TABLE `sa_report` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `content` longtext, `sa_city_id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `update_time` datetime DEFAULT NULL COMMENT '更新时间', `verify_status` tinyint(1) NOT NULL DEFAULT '1', `delete_status` tinyint(1) NOT NULL DEFAULT '0', `sa_report_type_id` tinyint(1) NOT NULL COMMENT '帖子类型,救助还是宠物日记', `sa_user_id` bigint(20) NOT NULL, PRIMARY KEY (`id`), KEY `sa_user_report` (`sa_user_id`), KEY `sa_report_type_forgkey` (`sa_report_type_id`), KEY `sa_report_city_key` (`sa_city_id`), CONSTRAINT `sa_report_city_key` FOREIGN KEY (`sa_city_id`) REFERENCES `sa_city` (`id`), CONSTRAINT `sa_report_type_forgkey` FOREIGN KEY (`sa_report_type_id`) REFERENCES `sa_report_type` (`id`), CONSTRAINT `sa_user_report` FOREIGN KEY (`sa_user_id`) REFERENCES `sa_user` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;
具体修改点
- 将
create_time和update_time字段的datetime(1)改为datetime,适配MySQL 5.5的语法规范。 - 把索引和外键名称中的
sa_user_re[ort修改为sa_user_report,移除非法的[字符,确保标识符名称合法。
内容的提问来源于stack exchange,提问作者pigpigsir
相关产品推荐
相关产品推荐

