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

Hvordan ændrer man MySQL-tabelnavne i Linux-serveren, så de ikke skelner mellem store og små bogstaver?

MySQL's store og små bogstavsfølsomhed håndteres som standard af filsystemet, hvorfor du fandt denne forskel:

9.2.2. Identifikator, store og små bogstaver

I MySQL svarer databaser til mapper i databiblioteket. Hver tabel i en database svarer til mindst én fil i databasebiblioteket (og muligvis flere, afhængigt af lagermotoren). Som følge heraf spiller det underliggende operativsystems følsomhed mellem store og små bogstaver en rolle i følsomheden af ​​store og små bogstaver i database- og tabelnavne. Det betyder, at database- og tabelnavne ikke skelner mellem store og små bogstaver i Windows, og der skelnes mellem store og små bogstaver i de fleste varianter af Unix. En bemærkelsesværdig undtagelse er Mac OS X, som er Unix-baseret, men bruger en standard filsystemtype (HFS+), der ikke skelner mellem store og små bogstaver. Mac OS X understøtter dog også UFS-volumener, der skelner mellem store og små bogstaver, ligesom på enhver Unix. Se afsnit 1.8.4, "MySQL-udvidelser til Standard SQL".

Heldigvis kunne den næste sætning hjælpe dig:

små_case_table_names systemvariablen påvirker også, hvordan serveren håndterer følsomhed over for store og små bogstaver, som beskrevet senere i dette afsnit.

lower_case_table_names forklaring:

Hvis indstillet til 0, gemmes tabelnavne som angivet, og sammenligninger skelner mellem store og små bogstaver. Hvis indstillet til 1, gemmes tabelnavne med små bogstaver på disken, og sammenligninger skelner ikke mellem store og små bogstaver. Hvis indstillet til 2, gemmes tabelnavne som givet, men sammenlignes med små bogstaver. Denne mulighed gælder også for databasenavne og tabelaliasser. For yderligere information, se afsnit 9.2.2, "Identifier Case Sensitivity".

Du bør ikke indstille denne variabel til 0, hvis du kører MySQL på et system, der ikke har store og små bogstaver i filnavne (såsom Windows eller Mac OS X). Hvis du indstiller denne variabel til 0 på et sådant system og får adgang til MyISAM-tabelnavne ved hjælp af forskellige bogstaver, kan indekskorruption medføre. På Windows er standardværdien 1. På Mac OS X er standardværdien 2.

Så det ser ud til, at du skal indstille lower_case_table_names til 1 i MySQL-konfigurationsfilen.



  1. Fatal fejl:Kald til en medlemsfunktion bind_param() på boolean

  2. fejl ved indsættelse af android.database.sqlite.sqliteconstraintexception fejlkode 19 begrænsning mislykkedes

  3. Hvordan ændres PostgreSQL brugeradgangskode?

  4. Forstå log buffer skylninger