我需要更改一堆PK列类型,并使用MySQL的Workbench来设计我的数据库。
是否可以更改给定表中的PK类型,并自动更改所有FK类型?
答案 0 :(得分:0)
我执行了检查工作台。我创建了表员工和 employees_hobbies 。表PK
的{{1}}为employees
类型id_employees
。 INT(11)
表格的employees_hobbies
FK
类型为id_employees
。我尝试更改INT(11)
表id_employees
employees
中字段的类型,错误如下:
错误1025:重命名' ./ teste / #sql-4aa_10875'至 ' ./泰斯特/员工' (错误:150)SQL语句:ALTER TABLE
CHAR(5)
。teste
更改字段employees
id_employees
CHAR(5)NOT NULL错误:运行故障回复脚本时出错。
错误表示(错误号:150)
MySQL错误代码150:外键约束形成错误
我的表格:
id_employees
您无法在Workbench中执行此操作。
解决方案是生成脚本并解析执行交换类型的所有CREATE TABLE `employees` (
`id_employees` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`url_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id_employees`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `employees_hobbies` (
`id_employees_hobbies` int(11) NOT NULL AUTO_INCREMENT,
`id_employees` int(11) NOT NULL,
`id_hobbies` int(11) NOT NULL,
PRIMARY KEY (`id_employees_hobbies`),
KEY `fk_employees_hobbies_1_idx` (`id_employees`),
KEY `fk_employees_hobbies_2_idx` (`id_hobbies`),
CONSTRAINT `fk_employees_hobbies_1` FOREIGN KEY (`id_employees`) REFERENCES `employees` (`id_employees`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_employees_hobbies_2` FOREIGN KEY (`id_hobbies`) REFERENCES `hobbies` (`id_hobbies`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
。