sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

Ändra datatypen för en kolumn i hela databasen - MySQL

Om du inte kan skriva ett manus för att göra jobbet, skriv ett manus som skriver ett manus för att göra jobbet!

Du vill ha ett gäng ALTER TABLE-satser:

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

Detta kommer att resultera i:

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

Kör det så kan du gå hem tidigt!

UPPDATERING:Stoppade trunkeringen genom att lägga till group_concat_max_len . Gjorde längden dynamisk baserat på kolumnernas längd.



  1. många till många relation bridge table dilemma

  2. Felsökning i SQL Management Studio 2012

  3. Ändra standardteckenuppsättning

  4. PHPMYADMIN ,,Fel vid bearbetning av begäran Felkod:200 Feltext:OK