2009-06-02 9 views
4

Ich betreibe Blogengine.Net und habe bemerkt, dass die Tische alle Kleinbuchstaben (Tabellenname be_settings) erstellt werden, aber viele der Abfragen werden Mixedcase (Select * from be_Settings) geschrieben. Dies funktioniert einwandfrei, wenn Ihre MySql-Instanz unter Windows ausgeführt wird oder für die Kompatibilität mit Windows festgelegt ist. Ich erhalte einen Fehler, weil meine Hosting-Provider-MySql-Instanz Groß- und Kleinschreibung unterscheidet. Gibt es eine Einstellung, die ich ändern kann, um diesen Fehler durch phpMyAdmin zu beheben? Ich möchte nicht den ganzen Code durchforsten und BlogEngine.Net reparieren müssen, wenn ich nicht muss.Ändern MySql Groß-/Kleinschreibung mit phpMyAdmin?

Antwort

1

Wenn Sie versuchen, dies für BlogEngine.Net zu lösen Sie leicht alle Tabellen umbenennen Camelcase als alle Abfragen in BlogEngine.Net geschrieben Camelcase verwenden zu verwenden.

0

Wie wird die Datenbank erstellt werden? Sie können feststellen, dass die Abfragen, die die Tabellen verwenden den richtigen Fall erstellen:

CREATE TABLE be_Settings (...) 

Es ist nur so, dass MyISAM-Tabellen als Dateien im Dateisystem gespeichert sind, und da es unter Windows ist, sind sie nur in Kleinbuchstaben umgewandelt . Wenn Sie die Datenbank aus diesen Abfragen auf einem Linux-System erstellen, werden Sie feststellen, dass sich alle Tabellen im richtigen Fall befinden.

Die Lehre aus dieser ist es, immer Tabellen Namen Kleinbuchstaben zu machen ...

+0

Wenn nur BlogEngine.Net diese Regel gefolgt war. –

+0

Sie könnten versuchen, die Dateien zu InnoDB zu ändern .... – nickf

+0

ich geprüft und alle Tabellen verwenden InnoDB. Ich war in der Lage, alle Tabelle mit phpMyAdmin umzubenennen, so dass sie Camelcase verwenden, da Blugengine.Net Camelcase in allen Abfragen verwendet –

1

Die Einstellung, die Sie sind nach heißt lower_case_table_names (auf 1 oder 2). Leider musste dies beim Start des MySQL-Daemon eingestellt werden, nicht bei phpmyadmin. Könnten Sie Ihren Hosting-Provider bitten, dies für Sie zu tun?

3

Fall Empfindlichkeit in MySQL Tabellennamen ist für die OS-spezifisch. MySQL-Daten werden in Dateien gespeichert, die den vom Betriebssystem erzwungenen Regeln unterliegen. Linux unterscheidet zum Beispiel zwischen Groß- und Kleinschreibung.

Es ist eine Variable ‚lower_case_table_names‘, die manipuliert werden kann, aber es scheint, wie Sie alle Tabellen neu erstellen müssten.

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html