过去我曾使用PHP脚本更改所有字段的语言,但我找不到任何可以将所有未签名的MEDIUMINT切换为未签名的INT的东西。这可能吗?我应该手动全部切换吗?:o
原来中整数太小了。。。所以我必须更改很多字段/:
编辑:感谢您的输入,现在我知道没有简单的自动化方法了,我可能只需要手动完成。如果有自动化的方法,我只是不想浪费时间手动更改100多个字段。
MySQL没有自动表示"获取所有类型为X的列,并将其更改为类型Y。"您可以查询information_schema
数据库,找出需要更改的列,然后根据这些信息构建ALTER TABLE
查询。
具体来说,请查看information_schema.columns
表。
您可以使用以下查询来查找特定数据库中的所有mediumint
列(具有各自的表名),然后迭代结果,以您选择的编程语言生成和执行ALTER
查询。
SELECT
table_name, column_name, numeric_precision, column_type
FROM
information_schema.columns
WHERE
TABLE_SCHEMA = 'DATABASE_NAME'
AND data_type = 'mediumint';
必须在SQL中完成,因此,如果在您的情况下编写一个脚本来完成它是有意义的,那么就去做吧,但很可能您会想要手动完成。
由于您正在从一个描述性较低的数据类型转变为一个描述性更强的数据类型,因此您应该没事。
Usint ALTER TABLE语法应该有效:
ALTER TABLE table_name MODIFY column_name INT UNSIGNED