【问题标题】:MySQL - How to alter column datatype in all databases?MySQL - 如何更改所有数据库中的列数据类型?
【发布时间】:2017-11-27 18:02:43
【问题描述】:

在我的远程服务器上,我需要更新所有数据库中表中的列。我怎样才能一次完成这一切?我有超过一百个数据库有同一个表。

ALTER TABLE tablename MODIFY columnname VARCHAR(255);

【问题讨论】:

  • 我认为你不能使用扁平的 mysql 命令行或客户端。您将不得不使用至少一个包含所有数据库名称的文件和一个 bash 脚本。您也可以使用您使用的任何语言。作为一名 Rubyst,我建议您使用 mysql2 gem 和一个简单的 ruby​​ 脚本。

标签: mysql command-line ddl


【解决方案1】:

您可以编写 SQL 查询来发出执行此操作的脚本。该查询查看描述服务器中列的information_schema 表,并生成一系列ALTER 查询。然后运行这些查询。

SELECT CONCAT(' ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, 
              '` MODIFY `',COLUMN_NAME,'` VARCHAR(255);') ddl 
  FROM information_schema.`COLUMNS` 
 WHERE TABLE_NAME = 'tablename' 
   AND COLUMN_NAME IN ('columnname')

没有任何oneliner可以做ALTER TABLE *.tablename或类似的事情。

【讨论】: