使用MySQL Workbench更改PK和FK列类型

时间:2014-05-18 00:07:59

标签: mysql mysql-workbench

我需要更改一堆PK列类型,并使用MySQL的Workbench来设计我的数据库。

是否可以更改给定表中的PK类型,并自动更改所有FK类型?

1 个答案:

答案 0 :(得分:0)

我执行了检查工作台。我创建了表员工 employees_hobbies 。表PK的{​​{1}}为employees类型id_employeesINT(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;