ストアドプロシージャを使用しないソリューション(phpMyAdminまたはその他のDBAツールのみを使用)。
次のクエリを実行します
SELECT
CONCAT('ALTER TABLE ',
TABLE_NAME,
' CHANGE COLUMN ',
COLUMN_NAME,
' ',
column_name,
' TARGET_TYPE ',
CASE
WHEN IS_NULLABLE = 'NO' THEN ' NOT '
ELSE ''
END,
' NULL;') AS que
FROM
information_schema.columns
WHERE
table_schema = 'MY DB'
AND data_type = 'SOURCE_TYPE';
このクエリは、起動するすべてのステートメントを返します。それらを実行するか、SQLアップグレードスクリプトに保存できます
例(tinyintからbitまで):
ALTER TABLE mytable CHANGE COLUMN redacted redacted BIT NULL;
ALTER TABLE mytable CHANGE COLUMN redacted2 redacted2 BIT NOT NULL;