Weiß jemand, wie ich Groß- und Kleinschreibung in meinen Tabellennamen bewahren kann (Win 10 mit phpMyAdmin, neueste xampp-Distribution). Könnte dies daran liegen, dass xampp MariaDB anstelle von mySQL verwendet?

Tabellennamen werden in Kleinbuchstaben umgeschrieben.

Lesen Sie auf der phpMyAdmin-Website, dass ich Folgendes hinzufügen sollte, um den Fall zu bewahren:

'set-variable=lower_case_table_names=0'

Dies stoppte mySQL beginnend mit einer Fehlermeldung:

[ERROR] c:\xampp\mysql\bin\mysqld.exe: unknown variable 'set-variable=lower_case_table_names=0'

Nachdem ich hier eine Antwort gelesen hatte, erfuhr ich, dass ich lower_case_table_names=0 verwenden sollte, also fügte ich dies my.ini hinzu und bekam immer noch den gleichen Fehler.

Ich habe dann 20 Minuten damit verbracht herauszufinden, wo mein set-variable=lower_case_table_names=0 eingestellt war. (Dachte, es muss zwischengespeichert oder dupliziert werden oder so.)

In meiner Verzweiflung habe ich das lower_case_table_names=0 gelöscht und der Fehler ist verschwunden. Ich legte es zurück und bekam das [ERROR] c:\xampp\mysql\bin\mysqld.exe: unknown variable 'set-variable=lower_case_table_names=0' Fehler. IE sie scheinen Aliase mit der Fehlerberichterstattung zu sein. Etwas irritierend.

0
BeNice 30 Dez. 2015 im 23:15

2 Antworten

Beste Antwort

Sie sollten die Dokumentation etwas genauer lesen, insbesondere Groß- / Kleinschreibung Abschnitt.

In MySQL entsprechen Datenbanken Verzeichnissen innerhalb des Datenverzeichnisses. Jede Tabelle in einer Datenbank entspricht mindestens einer Datei im Datenbankverzeichnis (und möglicherweise mehr, abhängig von der Speicher-Engine). Trigger entsprechen auch Dateien. Folglich spielt die Groß- und Kleinschreibung des zugrunde liegenden Betriebssystems eine Rolle bei der Groß- und Kleinschreibung von Datenbank-, Tabellen- und Triggernamen. Dies bedeutet, dass solche Namen in Windows nicht zwischen Groß- und Kleinschreibung unterscheiden, in den meisten Unix-Varianten jedoch zwischen Groß- und Kleinschreibung.

Wert Bedeutung

0 Tabellen- und Datenbanknamen werden mit dem auf der Festplatte gespeichert In der Anweisung CREATE TABLE oder CREATE DATABASE angegebenes Lettercase. Bei Namensvergleichen wird zwischen Groß- und Kleinschreibung unterschieden. Sie sollten dies nicht einstellen Variable auf 0, wenn Sie MySQL auf einem System ausführen, das hat Dateinamen, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird (z. B. Windows oder OS X). Wenn Sie dies erzwingen Diese Variable wird mit --lower-case-table-names = 0 auf a auf 0 gesetzt Dateisystem ohne Berücksichtigung der Groß- und Kleinschreibung und Zugriff auf MyISAM-Tabellennamen mit Bei unterschiedlichen Briefkästen kann es zu einer Beschädigung des Index kommen. 1 Tabellennamen sind Auf der Festplatte in Kleinbuchstaben gespeicherte Vergleiche und Namensvergleiche werden nicht berücksichtigt empfindlich. MySQL konvertiert alle Tabellennamen beim Speichern in und in Kleinbuchstaben Nachsehen. Dieses Verhalten gilt auch für Datenbanknamen und Tabellen Aliase. 2 Tabellen- und Datenbanknamen werden mit dem auf der Festplatte gespeichert in der Anweisung CREATE TABLE oder CREATE DATABASE angegebenes Lettercase, MySQL konvertiert sie jedoch bei der Suche in Kleinbuchstaben. Namensvergleiche sind nicht zwischen Groß- und Kleinschreibung unterscheiden. Dies funktioniert nur auf Dateisystemen, die nicht der Fall sind empfindlich! InnoDB-Tabellennamen werden wie für in Kleinbuchstaben gespeichert Kleinbuchstaben_Tabellennamen = 1.Can't load full resultsTry againRetrying...Retrying...

Zusammenfassend: Unter Windows sollten Sie keine Kleinbuchstaben-Tabellennamen auf 0 setzen. Wenn Sie die Groß- und Kleinschreibung für Tabellennamen unter Windows beibehalten möchten, setzen Sie Kleinbuchstaben-Tabellennamen auf 2.

Im Abschnitt Verwenden von Systemvariablen wird die Einstellung erläutert eine Systemvariable auf verschiedene Arten.

2
Shadow 30 Dez. 2015 im 21:09

Das Einfügen von Kleinbuchstaben_Tabellennamen = 2 in Ihre my.ini-Dateien ermöglicht die Verwendung von Groß- und Kleinbuchstaben in Tabellennamen ... ABER ... GROSS ABER ... Sie können KEINE Großbuchstaben in BESTEHENDE Dateinamen einfügen.

Die Lösung besteht darin, Ihre Tabelle in eine neue Tabelle mit dem "richtigen" Namen zu kopieren.

Da dies jedoch nur das Erscheinungsbild der Tabellennamen ändert (Tabellen werden in Kleinbuchstaben gespeichert), müssen Sie eine Zwischentabelle verwenden.

ZB möchten Sie, dass der Tabellenname HelloWorld lautet, aber Sie stellen fest, dass er als helloworld gespeichert ist. Fügen Sie die obige Zeile zu Ihrer my.ini-Datei hinzu und erstellen Sie eine Kopie von helloworld in eine neue Tabelle. Sagen Sie "helloTemp", löschen Sie helloworld. Kopieren Sie helloTemp in HelloWorld. Löschen Sie helloTemp und Sie haben eine Tabelle mit HelloWorld als Namen.

-1
BeNice 29 Sept. 2017 im 22:23