3

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

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

4

3 回答 3

3

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

ALTER TABLE mytable MODIFY COLUMN mycolumn INT(11);

于 2015-03-19T15:55:13.930 回答
0

你可以试试:

  1. 添加具有适当类型的新列。
  2. 将旧列中的值复制到新列。
  3. 重命名列。
  4. 更新约束(可能分两步 -DROPCREATE)。
  5. 删除旧列。
于 2012-12-18T12:55:20.227 回答
-1

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

于 2012-01-18T19:19:31.823 回答