MySQL PHP alter table,将所有MEDIUMINT更改为INT

时间:2012-07-20 04:02:29

标签: php mysql database

在过去,我使用PHP脚本来更改所有字段的语言,但是找不到任何将所有UNSIGNED MEDIUMINT切换为UNSIGNED INT的内容。这可能吗?我应该手动切换它们吗? :○

原来,mediumint太小了...所以我必须改变很多字段/:

编辑: 感谢输入,我现在可能只是手动完成,因为我知道没有简单的自动化方法。如果有自动方式,我只是不想浪费时间手动更改100多个字段。

3 个答案:

答案 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