2012-11-23 13 views

Odpowiedz

30

Tak na pewno

ALTER TABLE table_name MODIFY column_name VARCHAR(X)

+0

Wielkie dzięki za super szybką odpowiedź :) – user1768076

4

dla MS SQL:

ALTER TABLE table_name 
ALTER COLUMN column_name datatype(value) 

MySQL

ALTER TABLE table_name 
MODIFY column_name datatype(value) 
+1

P na nowo 'datatype (value)' jest typem docelowym, a nie typem źródłowym? – ArtB

+0

Prawidłowo, powinienem był to trochę wyjaśnić. –

0

użyłem tego do masowej zmiany mojego DB. Wykonaj go, a następnie skopiuj wszystkie wiersze, wklej do pola zapytania, usuń nagłówek i uruchom.

silnikowy, CHARSET i zestawienie wszystkich tabel w dB = ITSD:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," ENGINE=INNODB, 
CHARSET=utf8, COLLATE=utf8_general_ci;") AS ExecuteTheString 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA="itsd" 
    AND TABLE_TYPE="BASE TABLE"; 

Konwersja CHARSET i zestawienie wszystkich tabel w bazie danych = ITSD:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," CONVERT TO 
CHARACTER SET utf8;") AS ExecuteTheString 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA="itsd" 
    AND TABLE_TYPE="BASE TABLE"; 

Zmień wszystkie pola tekstowe do VARCHAR (255) wszystkich tabel w DB = jego:

SELECT CONCAT('ALTER TABLE ', table_schema, '.', table_name, ' MODIFY COLUMN ', 
column_name, ' VARCHAR(255);') 
FROM information_schema.columns 
WHERE TABLE_SCHEMA = 'itsd' 
    AND DATA_TYPE = 'text' 
    AND TABLE_TYPE="BASE TABLE"; 
Powiązane problemy