Nếu bạn không thể viết một đoạn script để thực hiện công việc, hãy viết một đoạn script viết một đoạn script để thực hiện công việc!
Bạn muốn một loạt các câu lệnh ALTER TABLE:
SET SESSION group_concat_max_len = 1000000; -- Bumps the limit of 1028
SELECT GROUP_CONCAT(
CONCAT(
'ALTER TABLE `',
table_name,
'` MODIFY COLUMN `',
column_name,
'` VARCHAR(',
character_maximum_length,
')'
)
SEPARATOR ';\n') your_alter_statements
FROM information_schema.columns
WHERE table_schema = 'concrete'
AND data_type = 'char';
Điều này sẽ dẫn đến:
ALTER TABLE `table1` MODIFY COLUMN `col1` VARCHAR(10);
ALTER TABLE `table1` MODIFY COLUMN `col2` VARCHAR(10);
ALTER TABLE `table2` MODIFY COLUMN `col1` VARCHAR(10);
ALTER TABLE `table3` MODIFY COLUMN `col1` VARCHAR(10);
ALTER TABLE `table3` MODIFY COLUMN `col2` VARCHAR(10);
Chạy cái đó và bạn có thể về nhà sớm!
CẬP NHẬT:Đã dừng việc cắt bớt bằng cách thêm group_concat_max_len
. Tạo độ dài động dựa trên độ dài cột.