我最近注意到我的一个数据库中有几个 bigint 类型字段可以替换为“int”类型。问题是数据库已经在线并在使用中,并且还有外键在起作用,所以当我尝试更改离线数据库中的数据类型时,mysql 不会让我这样做并产生错误消息:“#1025 - 重命名 (...)" 时出错。
那么如何在保持外键满意的同时更改这些字段呢?(而不是清除现有的数据库!)
我最近注意到我的一个数据库中有几个 bigint 类型字段可以替换为“int”类型。问题是数据库已经在线并在使用中,并且还有外键在起作用,所以当我尝试更改离线数据库中的数据类型时,mysql 不会让我这样做并产生错误消息:“#1025 - 重命名 (...)" 时出错。
那么如何在保持外键满意的同时更改这些字段呢?(而不是清除现有的数据库!)
只要列中没有任何数据不适合较小的 INT 数据类型,就可以将列从 BIGINT 更改为 INT。
ALTER TABLE mytable MODIFY COLUMN mycolumn INT(11);
你可以试试:
DROP
和CREATE
)。保存数据时,您无法减小字段的大小。您只能扩展它们。您可以做的是导出所有数据,禁用键,清空表,更改字段大小并再次导入数据。