Interpretation von MySQL-Konfigurationsproblemen, bei denen die Groß-/Kleinschreibung beachtet wird

jacklove
Freigeben: 2023-03-30 21:52:02
Original
2737 Leute haben es durchsucht

1.mysql case-sensitive Konfiguration

Zwei Parameter im Zusammenhang mit der MySQL-case-sensitiven Konfiguration, lower_case_file_system und lower_case_table_names .

Sehen Sie sich die aktuelle Konfiguration von MySQL an, bei der die Groß-/Kleinschreibung beachtet wird

show global variables like '%lower_case%';+------------------------+-------+| Variable_name          | Value |
+------------------------+-------+| lower_case_file_system | ON    |
| lower_case_table_names | 0     |+------------------------+-------+
Nach dem Login kopieren

lower_case_file_system

Gibt an, ob bei der aktuellen Systemdatei die Groß-/Kleinschreibung beachtet wird, ein schreibgeschützter Parameter vorliegt und nicht geändert werden kann.

EINGroß-/Kleinschreibung wird nicht beachtet
AUSGroß-/Kleinschreibung beachtet
lower_case_table_names

Gibt an ob beim Tabellennamen die Groß-/Kleinschreibung beachtet wird und ob er geändert werden kann.

Wenn Lower_case_table_names = 0, arbeitet MySQL direkt basierend auf dem Tabellennamen und unterscheidet zwischen Groß- und Kleinschreibung.
Wenn Lower_case_table_names = 1 ist, konvertiert MySQL zunächst den Tabellennamen in Kleinbuchstaben, bevor der Vorgang ausgeführt wird.

Legen Sie den Wert von Kleinbuchstaben-Tabellennamen fest

Öffnen Sie die Datei my.cnf, fügen Sie die folgenden Anweisungen hinzu und starten Sie neu.

lower_case_table_names = 0 或 lower_case_table_names = 1
Nach dem Login kopieren

2. Testen Sie verschiedene Situationen, wenn Lower_case_table_names 0 und 1 ist

Tabellenbenutzer erstellen

CREATE TABLE `user` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(20) NOT NULL,  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Nach dem Login kopieren

1. Setzen Sie Lower_case_table_names = 0

Der Tabellenname stimmt mit der Groß-/Kleinschreibung überein, als er erstellt wurde.

select count(*) from user;
+----------+| count(*) |
+----------+|        0 |
+----------+
Nach dem Login kopieren
Nach dem Login kopieren

Der Tabellenname stimmt nicht mit der Groß-/Kleinschreibung überein, als er erstellt wurde erstellt

select count(*) from User;ERROR 1146 (42S02): Table 'user.User' doesn't exist
Nach dem Login kopieren

Wenn Lower_case_table_names=0, wird bei Tabellennamen die Groß-/Kleinschreibung beachtet.

2. Setzen Sie Lower_case_table_names = 1

Der Tabellenname muss in der gleichen Groß-/Kleinschreibung angegeben werden wie bei der Erstellung

select count(*) from user;
+----------+| count(*) |
+----------+|        0 |
+----------+
Nach dem Login kopieren
Nach dem Login kopieren

Der Tabellenname stimmt nicht mit der Groß-/Kleinschreibung überein, als er erstellt wurde

select count(*) from User;
+----------+| count(*) |
+----------+|        0 |
+----------+
Nach dem Login kopieren

Wenn Lower_case_table_names=1, wird beim Tabellennamen die Groß-/Kleinschreibung nicht beachtet.

3. Wenn Sie „lower_case_table_names=1“ festlegen, meldet die ursprüngliche Tabelle, dass „lower_case_table_names=0“ nicht existiert > Wenn lower_case_table_names=0

, gemischte Groß- und Kleinschreibung zum Erstellen eines Tabellennamens verwenden und dann

lower_case_table_names=1 festlegen, wird die ursprünglich erstellte Tabelle bei Verwendung als nicht vorhanden angezeigt.

Demo

Erster Satz lower_case_table_names=0

Tabellenbenutzer erstellen (gemischte Groß-/Kleinschreibung)

CREATE TABLE `User` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(20) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;show tables;
+----------------+| Tables_in_user |
+----------------+| User           |
+----------------+
Nach dem Login kopieren

und dann

lower_case_table_names=1

festlegen, um die Abfrage auszuführen. Unabhängig davon, ob der Tabellenname in Groß- oder Kleinbuchstaben geschrieben ist, wird angezeigt, dass die Tabelle nicht existiert

select * from User;ERROR 1146 (42S02): Table 'user.user' doesn't existselect * from user;ERROR 1146 (42S02): Table 'user.user' doesn't existselect * from USER;ERROR 1146 (42S02): Table 'user.user' doesn't exist
Nach dem Login kopieren

Denn wenn Lower_case_table_names=1, wird der Tabellenname vor dem Vorgang in Kleinbuchstaben konvertiert und es gibt überhaupt keinen Tabellennamen in Kleinbuchstaben in der Datei, sodass ein Fehler auftritt.

Lösung:

Wenn Sie Kleinbuchstaben-Tabellennamen von 0 auf 1 ändern möchten, sollten Sie zuerst die alten Daten ändern table Verarbeiten Sie die Tabellennamen, ändern Sie zuerst die Tabellennamen aller Datenbanken in Kleinbuchstaben und setzen Sie schließlich Lower_case_table_names auf 1, da sonst die oben genannten Probleme auftreten.


Zusammenfassung:

Unterschiedliche Betriebssysteme führen zu einer inkonsistenten Groß-/Kleinschreibung. Wenn wir entwickeln, sollten wir nach dem Prinzip der Groß-/Kleinschreibung entwickeln, damit das entwickelte Programm mit verschiedenen Betriebssystemen kompatibel sein kann. Daher wird empfohlen, den Wert von „lower_case_table_names“ in der Entwicklungs- und Testumgebung auf 0 zu setzen, um die Groß-/Kleinschreibung des Codes während der Entwicklung streng zu kontrollieren und die Kompatibilität und Genauigkeit des Codes zu verbessern. In diesem Artikel wird das Problem der Groß-/Kleinschreibung bei der Konfiguration von MySQL erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

So verwenden Sie PHP, um Arrays zusammenzuführen und Schlüsselwerte beizubehalten


So verwenden Sie phpcurl zur Implementierung Multiprozess-Download-Dateiklasse


So ermitteln Sie über PHP, ob lokale und Remote-Dateien vorhanden sind

Das obige ist der detaillierte Inhalt vonInterpretation von MySQL-Konfigurationsproblemen, bei denen die Groß-/Kleinschreibung beachtet wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage