导入SQL文件触发MySQL #1075错误,求问题排查与解决
MySQL表创建错误#1075排查与修复
错误原因
报错#1075 - There can be only one auto column and it must be defined as a key的核心原因是:MySQL要求带有AUTO_INCREMENT属性的列必须在表创建时就被指定为键(主键或唯一键),你的代码中先创建表(此时自增列id未关联任何键),之后再通过ALTER TABLE添加主键,这违反了MySQL的规则。
修复方案
将主键定义直接整合到CREATE TABLE语句中,同时调整表的创建顺序确保外键引用的表先存在。修复后的完整SQL如下:
-- 先创建被sp_players引用的sp_prints表 CREATE TABLE `sp_prints`( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `title` VARCHAR(255) NOT NULL, `player` INT NOT NULL, `momemt` INT NOT NULL, `season` INT NOT NULL, `compeitition` INT NOT NULL ); -- 创建sp_players表,直接指定主键 CREATE TABLE `sp_players`( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `title` VARCHAR(255) NOT NULL, `image` VARCHAR(255) NOT NULL, `club` INT NOT NULL, `trophies` INT NOT NULL, `birthdate` DATE NOT NULL, `prints` INT NOT NULL ); -- 添加外键约束 ALTER TABLE `sp_players` ADD CONSTRAINT `sp_players_prints_foreign` FOREIGN KEY(`prints`) REFERENCES `sp_prints`(`id`); ALTER TABLE `sp_prints` ADD CONSTRAINT `sp_prints_player_foreign` FOREIGN KEY(`player`) REFERENCES `sp_players`(`id`);
额外说明
- 调整表创建顺序:先创建
sp_prints,确保sp_players的外键prints能找到有效的引用目标。 - 将
PRIMARY KEY直接写在自增列定义后,让自增列在表创建时就成为主键,满足MySQL对自增列的约束要求。
内容的提问来源于stack exchange,提问作者JanineML
相关产品推荐
相关产品推荐

