简短的回答是“是”,并带有一系列 ALTER TABLE 语句。
但是,首先,备份您的数据库。
接下来,通过查询 information_schema 确定您已经确定了所有存在这些列的实例的表。类似的东西
SELECT `table_name`, `column_name`, `column_type`, `column_default`, `is_nullable`
FROM `information_schema`.`columns`
WHERE `table_schema` = 'yourdbname'
AND `column_name` IN('Version','Say Active')
ORDER BY `column_name`;
这将为您提供表格列表,并允许您查看当前定义是否一致。
接下来,您需要为标识的每个表和列创建一些 ALTER TABLE 语句,以便为您正在更改的列提供 FULL 定义。如果您对 mysql syntax 不满意,请使用
获取当前定义
SHOW CREATE TABLE `tablename1`;
在受影响的表格之一上并将它们复制出来,替换编辑版本中的列长度。
使用 MODIFY COLUMN 而不是 CHANGE COLUMN 语法,因为您不会更改列名。
如果我们假设您对 Version 列的定义返回为
Version varchar(12) 非空
如果你想把它的长度加倍,你会为每个实例创建一个 ALTER TABLE 语句:
ALTER TABLE `tablename1` MODIFY COLUMN `Version` VARCHAR(24) NOT NULL;
ALTER TABLE `tablename2` MODIFY COLUMN `Version` VARCHAR(24) NOT NULL;
等等
当您更新了所有表后,您可以针对 information_schema 重新运行查询,以检查所有表中的两个列是否都已修改。