如何在bigql中将bigint更改为int,表中包含外键

时间:2012-01-18 17:50:46

标签: mysql foreign-keys key int bigint

我最近注意到我的一个数据库中有几个bigint类型字段可以替换为“int”类型。问题是数据库已经在线并且正在使用中,并且还有外键正在运行,因此当我尝试更改脱机数据库中的数据类型时,mysql不会让我产生错误消息:“#1025 - 重命名(...)“时出错。

那么如何在保持外键满意的同时更改这些字段呢? (而不是消灭现有的数据库!)

3 个答案:

答案 0 :(得分:1)

只要列中没有任何数据不适合较小的INT数据类型,就可以将列从BIGINT更改为INT。

ALTER TABLE mytable   MODIFY COLUMN mycolumn INT(11);

答案 1 :(得分:0)

在保存数据时,无法减小字段的大小。您只能展开它们。 您可以做的是导出所有数据,禁用密钥,清空表格,更改字段大小&再次导入数据。

答案 2 :(得分:0)

你可以尝试:

  1. 添加具有适当类型的新列。
  2. 将值从旧列复制到新列。
  3. 重命名列。
  4. 更新约束(可能分两步 - DROPCREATE)。
  5. 删除旧列。