phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

Ändern Sie den Datentyp einer Spalte in der gesamten Datenbank - MySQL

Wenn Sie kein Skript schreiben können, um die Aufgabe zu erledigen, schreiben Sie ein Skript, das ein Skript schreibt, um die Aufgabe zu erledigen!

Sie wollen eine Reihe von ALTER TABLE-Anweisungen:

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';

Das ergibt:

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);

Führen Sie das aus und Sie können früher nach Hause gehen!

UPDATE:Die Kürzung wurde durch Hinzufügen von group_concat_max_len gestoppt . Die Länge wurde basierend auf der Spaltenlänge dynamisch gemacht.