ALTER DATABASE
Sintassi
ALTER {DATABASE | SCHEMA} [nome_db] specifica_alter ... ALTER {DATABASE | SCHEMA} nome_db UPGRADE DATA DIRECTORY NAME alter_specification: [DEFAULT] CHARACTER SET [=] nome_charset | [DEFAULT] COLLATE [=] nome_collation
Spiegazione
ALTER DATABASE
permette di modificare le caratteristiche generali di un database. Queste sono scritte nel file db.opt nella directory del database. Per utilizzare ALTER DATABASE
occorre il privilegio ALTER
sul database interessato. ALTER SCHEMA
è sinonimo di ALTER DATABASE
.
La clausola CHARACTER SET
modifica il set di caratteri di default del database. La clausola COLLATE
modifica la collation di default del database. La pagina http://dev.mysql.com/doc/refman/5.1/en/charset.html illustra i set di caratteri e le collation.
E' possibile sapere quali set di caratteri e quali collation sono supportati usando, rispettivamente, le istruzioni SHOW CHARACTER SET
e SHOW COLLATION
. Si vedano [HELP SHOW CHARACTER SET] e [HELP SHOW COLLATION] per ulteriori informazioni.
Il nome del database può essere omesso nella prima sintassi, nel qual caso l'istruzione agirà sul database corrente.
La sintassi con la clausola UPGRADE DATA DIRECTORY NAME è stata aggiunta in MySQL 5.1.23. Aggiorna il nome della directory associata al database perché usi la codifica implementata in MySQL 5.1 per mappare i database alle directory (si veda http://dev.mysql.com/doc/refman/5.1/en/identifier-mapping.html). Questa clausola è stata pensata per i casi seguenti:
- Per aggiornare MySQL alla versione 5.1 o successiva.
- Per aggiornare il nome della directory del database alle codifiche attuali, se il nome contiene caratteri speciali.
- Questa clausola è usata da mysqlcheck (anche quando invocato da mysql_upgrade).
Per esempio, se un database in MySQL 5.0 si chiama a-b-c, il nome contiene il carattere `-'. Nella versione 5.0, la directory del database era chiamata a-b-c, ma questo non è sempre sicuro su tutti i filesystem. In MySQL 5.1 e superiori, lo stesso nome viene codificato come a@002db@002dc per avere un nome che funzioni su tutti i filesystem.
Quando una installazione di MySQL viene aggiornata a MySQL 5.1 o superiori, il server mostra un nome come a-b-c (cioè nel vecchio formato) come #mysql50#a-b-c, e occorre utilizzare il nome con il prefisso #mysql50#. In questo caso, con la clausola UPGRADE DATA DIRECTORY NAME si dice espressamente al server di ri-codificare il nome della directory nel formato corrente:
ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
Dopo aver eseguito questo comando, si può utilizzare il database chiamandolo a-b-c, senza il prefisso #mysql50#.