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

标签 mysql mysql-workbench

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

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

最佳答案

我执行此操作是为了检查工作台。我创建了表 employeesemployees_hobbies。表employeesPKid_employees,类型为INT(11)employees_hobbies 表具有类型 INT(11)FK id_employees。我尝试将employees表的id_employees中的字段类型更改为CHAR(5),错误如下:

ERROR 1025: Error on rename of './teste/#sql-4aa_10875' to './teste/employees' (errno: 150) SQL Statement: ALTER TABLE teste.employees CHANGE COLUMN id_employees id_employees CHAR(5) NOT NULL

ERROR: Error when running failback script.

错误的意思是(errno: 150)

MySQL error code 150: Foreign key constraint is incorrectly formed

我的表格:

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;

您无法在工作台中执行此操作。

解决方案是生成脚本并解析所有执行交换类型的FK

关于mysql - 使用 MySQL Workbench 更改 PK 和 FK 列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23717341/

相关文章:

MySQL 存储过程

mysqldump_wrokbench 数据导出高级选项不完整和所有 mysqldump 选项支持

linux - MySQL-Workbench 启动和 "Icon not found: sidebar_wb.png"

MySQL Left Join 需要一段时间

java - Hibernate:返回不是实体的DTO?

MySQL 语法错误

php - 用于移动验证的随机生成的 OTP 未更新到数据库

MySQL - 为自定义排序创建用户定义的函数

mysql - Mysql 查询中的排序和分组行

图表中的 Mysql Workbench 组合键