在过去,我使用PHP脚本来更改所有字段的语言,但是找不到任何将所有UNSIGNED MEDIUMINT切换为UNSIGNED INT的内容。这可能吗?我应该手动切换它们吗? :○
原来,mediumint太小了...所以我必须改变很多字段/:
编辑: 感谢输入,我现在可能只是手动完成,因为我知道没有简单的自动化方法。如果有自动方式,我只是不想浪费时间手动更改100多个字段。
答案 0 :(得分:2)
MySQL没有一种自动的方式来说“获取所有X类型的列并将其更改为类型Y”。您可以查询information_schema
数据库以确定需要更改的列,然后您可以根据该信息构建ALTER TABLE
查询。
具体来说,看一下information_schema.columns
表。
答案 1 :(得分:1)
您可以使用以下查询在特定数据库中查找所有mediumint
列(具有相应的表名),然后遍历结果以选择编程语言来生成并执行ALTER
查询。
SELECT
table_name, column_name, numeric_precision, column_type
FROM
information_schema.columns
WHERE
TABLE_SCHEMA = 'DATABASE_NAME'
AND data_type = 'mediumint';
答案 2 :(得分:0)
必须在SQL中完成,所以如果在你的情况下写一个脚本来做它是有意义的,那就去做吧,但很可能你会想要手动完成它。
由于您从描述性较低的数据类型转向更具描述性的数据类型,因此您应该没问题。
使用ALTER TABLE语法应该有效:
ALTER TABLE table_name MODIFY column_name INT UNSIGNED