Mysql
 sql >> Database >  >> RDS >> Mysql

Come modificare i nomi delle tabelle MySQL nel server Linux in modo che non facciano distinzione tra maiuscole e minuscole?

La distinzione tra maiuscole e minuscole di MySQL è gestita per impostazione predefinita dal file system, motivo per cui hai riscontrato questa differenza:

9.2.2. Identificatore di distinzione tra maiuscole e minuscole

In MySQL, i database corrispondono alle directory all'interno della directory dei dati. Ogni tabella all'interno di un database corrisponde ad almeno un file all'interno della directory del database (e possibilmente più, a seconda del motore di archiviazione). Di conseguenza, la distinzione tra maiuscole e minuscole del sistema operativo sottostante gioca un ruolo nella distinzione tra maiuscole e minuscole dei nomi di database e tabelle. Ciò significa che i nomi di database e tabelle non fanno distinzione tra maiuscole e minuscole in Windows e la distinzione tra maiuscole e minuscole nella maggior parte delle varietà di Unix. Un'eccezione degna di nota è Mac OS X, che è basato su Unix ma utilizza un tipo di file system predefinito (HFS+) che non fa distinzione tra maiuscole e minuscole. Tuttavia, Mac OS X supporta anche i volumi UFS, che fanno distinzione tra maiuscole e minuscole proprio come su qualsiasi Unix. Vedere Sezione 1.8.4, «Estensioni MySQL a SQL standard».

Fortunatamente, la prossima frase potrebbe aiutarti:

Il lower_case_table_names La variabile di sistema influisce anche sul modo in cui il server gestisce la distinzione tra maiuscole e minuscole dell'identificatore, come descritto più avanti in questa sezione.

Il lower_case_table_names blurb:

Se impostato su 0, i nomi delle tabelle vengono archiviati come specificato e i confronti fanno distinzione tra maiuscole e minuscole. Se impostato su 1, i nomi delle tabelle vengono archiviati in minuscolo sul disco e i confronti non fanno distinzione tra maiuscole e minuscole. Se impostato su 2, i nomi delle tabelle vengono memorizzati come forniti ma confrontati in minuscolo. Questa opzione si applica anche ai nomi di database e agli alias di tabella. Per ulteriori informazioni, vedere la Sezione 9.2.2, "Maiuscole/minuscole dell'identificatore".

Non dovresti impostare questa variabile su 0 se stai eseguendo MySQL su un sistema che ha nomi di file senza distinzione tra maiuscole e minuscole (come Windows o Mac OS X). Se si imposta questa variabile su 0 su un tale sistema e si accede ai nomi delle tabelle MyISAM utilizzando lettere maiuscole diverse, potrebbe verificarsi un danneggiamento dell'indice. Su Windows il valore predefinito è 1. Su Mac OS X, il valore predefinito è 2.

Quindi sembra che dovresti impostare lower_case_table_names a 1 nel file di configurazione MySQL.