美文网首页
mysql表字段有外键,不能直接修改字符集要怎么办

mysql表字段有外键,不能直接修改字符集要怎么办

作者: Hwale | 来源:发表于2023-08-23 05:27 被阅读0次

> 3780 - Referencing column 'EmpId' and referenced column 'Id' in foreign key constraint 'FK_Sys_EmployeePost_Sys_Employee_EmpId' are incompatible.

如果表字段有外键关联,不能直接修改字符集,可以按照以下步骤进行操作:

为了方便后面理解语法,在此先做个定义:

假设我们要修改A的a字段,提示因外键约束,无法修改。

查询外键约束信息:

使用以下查询语句获取与A表a字段相关的外键约束信息:

SELECT CONSTRAINT_NAME, TABLE_NAME 

FROM information_schema.KEY_COLUMN_USAGE 

WHERE REFERENCED_TABLE_SCHEMA='A表数据库名称' AND REFERENCED_TABLE_NAME='A表';

这个查询将返回一个结果集,其中包含了与该A表a字段相关的外键约束的名称b外键和表名B。

结果我们称为B表b字段,(多个表时,C表c字段)

解除外键约束:

对于每个外键约束,在执行修改操作之前,需要使用以下语句解除外键约束:

ALTER TABLE B表  DROPFOREIGNKEY b外键约束;

请注意,解除外键约束可能会影响数据完整性,因此在执行此步骤之前,请确保已经备份了相关数据以防意外情况发生。

修改字段字符集:

执行相应的 ALTER TABLE 语句来修改字段的字符集,两个表的字段字符集都要修改

例如:

ALTER TABLE A表 MODIFY  COLUMN  a字段   char(255)  CHARACTER SET  utf8mb4   COLLATE   utf8mb4_general_ci;

B表做相同修改

ALTER TABLE B表 MODIFY  COLUMN  b字段   char(255)  CHARACTER SET  utf8mb4   COLLATE   utf8mb4_general_ci;

恢复外键约束:

在修改操作完成后,使用以下语句恢复之前解除的外键约束:

ALTER TABLE B表   ADD CONSTRAINT b外键约束名  FOREIGN KEY (b字段) REFERENCES A表(a字段);

请注意,在恢复外键约束之前,请确保修改操作不会导致数据完整性问题,以及备份了相关数据以防意外情况发生。

需要注意的是,根据具体情况,可能还需要进行其他额外的操作。如果你对操作不确定或没有相应权限,请寻求管理员的帮助,并确保在执行任何修改操作之前备份相关数据。

相关文章

  • orm查询操作

    单表查询操作 外键的跨表查询 正向查询(在有外键字段的表向没有的表查询) 反向查询(没有外键的字段向有外键字段的表...

  • mysql无法插入中文,设置和修改字符集

    创建数据库设置字符集: 创建表: 修改数据库字符集: 修改表默认字符集:对新字段生效 修改表的字符集:对已有字段生...

  • 25-约束-ALTER

    一、创表 外键 二、ALTER 将表employees的mobile字段修改到officeCode字段后面 将表e...

  • Hive表中文注释乱码问题

    解决desc命令注释中文乱码 修改hive存储在mysql里的元数据相关信息1).修改字段注释字符集 2).修改表...

  • Mysql学习——MySQL数据结构修改(2)

    Mysql表结构操作添加表字段修改表字段删除表字段修改表字段类型修改表名简介:Mysql表结构操作,添加表字段,修...

  • java基础-day32-数据库3.0

    10.6 外键约束 10.7 级联操作 11. 数据表修改 alter 11.1 添加字段 11.2 修改字段 1...

  • 外键

    外键的使用: FOREIGN KEY(XX) REFERENCES YYY(ZZZ); B表的外键字段不能为该表的...

  • 存储表情问题--修改表、字段的字符集

    (针对mysql) 能支持存储表情的字符集是utf8mb4。我根据网上资料修改了表和字段的字符集,navicat可...

  • sqlserver 2008 r2 主外键建立

    1。右键要建立的外检列字段,2.选择关系 外键表就是要建外键的表, 主键表是因为外键在另一个表上是主键。所以叫做主键表

  • 2018-09-03:外键

    外键:若一张表中有一个非主键字段指向了别一张表中的主键,则将该字段叫做外键。 一张表中可以有多个外键。...

网友评论

      本文标题:mysql表字段有外键,不能直接修改字符集要怎么办

      本文链接:https://www.haomeiwen.com/subject/rqpumdtx.html