Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL PHP alter table,将所有MEDIUMINT更改为INT_Php_Mysql_Database - Fatal编程技术网

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

MySQL PHP alter table,将所有MEDIUMINT更改为INT,php,mysql,database,Php,Mysql,Database,在过去,我使用PHP脚本来更改所有字段的语言,但是我找不到任何东西可以将所有未签名的MEDIUMINT转换为未签名的INT。这可能吗?我应该手动切换它们吗o 结果是mediumint太小了。。。因此,我必须更改许多字段/: 编辑: 感谢您的输入,现在我知道没有简单的自动化方法,我可能只需要手动操作。如果有一种自动方式,我不想浪费时间手动更改100多个字段。MySQL没有一种自动方式说“将所有类型为X的列都更改为类型Y”。您可以查询信息\u模式数据库,找出需要更改的列,然后,您可以基于该信息构建A

在过去,我使用PHP脚本来更改所有字段的语言,但是我找不到任何东西可以将所有未签名的MEDIUMINT转换为未签名的INT。这可能吗?我应该手动切换它们吗o

结果是mediumint太小了。。。因此,我必须更改许多字段/:

编辑:
感谢您的输入,现在我知道没有简单的自动化方法,我可能只需要手动操作。如果有一种自动方式,我不想浪费时间手动更改100多个字段。

MySQL没有一种自动方式说“将所有类型为X的列都更改为类型Y”。您可以查询
信息\u模式
数据库,找出需要更改的列,然后,您可以基于该信息构建
ALTER表
查询


具体来说,请查看
信息\u schema.columns
表。

必须在SQL中完成,因此,如果在您的情况下编写脚本来完成这项工作是有意义的,请尝试,但很可能您希望手动完成

由于您要从描述性较低的数据类型转变为描述性较强的数据类型,所以应该可以

Usint语法应适用于:

ALTER TABLE table_name MODIFY column_name INT UNSIGNED

您可以使用下面的查询来查找特定数据库中的所有
mediumint
列(以及相应的表名),然后迭代结果以生成并执行所选编程语言中的
ALTER
查询

SELECT 
    table_name, column_name, numeric_precision, column_type
FROM
    information_schema.columns
WHERE
    TABLE_SCHEMA = 'DATABASE_NAME'
        AND data_type = 'mediumint';

使用这个加上PHP逻辑,我应该能够编写一个脚本,将所有x类型的字段更改为y类型,对吗?我想手动操作可能会快一点,哈哈。是的,你绝对可以这样做。我没有提供一些示例代码的原因是,它可能需要至少10-15分钟的研究,而且。。。是 啊查看模式并手工编写一组
altertable
查询可能需要更少的时间懒惰是程序员的主要美德,但有时告诉计算机如何做这项工作比自己做更难。