MySQL Groß-, Kleinschreibung Tabellennamen
Dieter Raber
- datenbank
0 Tom0 Dieter Raber0 Tom
Hallo,
Wenn ich unter Windows XP in MySQL eine Tabelle anlege mit
create table foObAr(fOo mediumtext);
wird eine Tabelle 'foobar' mit der Spalte 'fOo' angelegt. Unter Windows ist das erstmal egal, aber wenn ich die Tabelle nach Linux migriere, finden meine PHP-Scripte die Tabelle natuerlich nicht mehr. Kann man MySQL unter Windows anweisen, Groß-, Kleinschreibung zu beachten? Der Grund meiner Frage ist, dass ich fuer eine sprachsensitive Anwendung die Konventionen von RFC 1766 benutzen will, also de_DE usw., die sich dann auch in den Tabellennamen widerspiegeln sollten.
Dieter
Hello,
Wenn ich unter Windows XP in MySQL eine Tabelle anlege mit
create table foObAr(fOo mediumtext);
Du könntest zumindest Deiner Applikation beibringen, auf Systemebene die Schreibweise zu ignorieren. Ist nicht die ganz richtige Stelle, aber wohl die sicherste.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi Tom,
Das hab ich mir auch schon ueberlegt. Es gibt auch die Moeglichkeit, die Dateien, die die Tabellen repraesentieren, in mysql/data dierekt umzubenennen. So richtig gluecklich bin ich damit aber nicht.
Dieter
Hello Dieter,
Das hab ich mir auch schon ueberlegt. Es gibt auch die Moeglichkeit, die Dateien, die die Tabellen repraesentieren, in mysql/data dierekt umzubenennen. So richtig gluecklich bin ich damit aber nicht.
Das wär ich auch nicht. Aber ich werde dieses Problem mal in meine Workaround-Liste aufnehmen. Ist wieder ein Grund mehr, nur über einheitliche Zugriffsmethoden auf die Datenbanken zuzugreifen. Man muss also davon ausgehen, dass unter MySQL die Tabellen heißen, wie sie wollen.
Bekommt man das denn wenigsten bei "show tables from <database>" richtig angezeigt?
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
Gutes Neues erstmal!
Der Dump sieht unter Windows, Command Line so aus:
-- Table structure for table desc\_de\_DE
DROP TABLE IF EXISTS desc_de_DE;
CREATE TABLE desc_de_de (
#klein geschrieben --^^
....
) TYPE=MyISAM;
-- Dumping data for table desc\_de\_DE
INSERT INTO desc_de_DE VALUES ..
show tables an der Kommandozeile zeigt ebenfalls desc_de_DE an.
Dieter
Hallo Tom,
Hier ist mein Workaround:
if (substr(PHP_OS, 0, 3) == 'WIN')
{
$my_dump = str_replace('desc_de_de', 'desc_de_DE', file_get_contents($dump_file));
$my_dump = str_replace('desc_en_gb', 'desc_en_GB', $my_dump);
$handle = fopen ($dump_file, "wb");
fwrite($handle, $my_dump);
fclose($handle);
}
Wahnsinnig elegant ist das immer noch nicht, aber immerhin funktioniert's mal fuer's erste. Du hast erwaehnt, du hast eine Workaround-Liste. Ist die oeffentlich, oder nur fuer Deinen Gebrauch bestimmt? Hoert sich auf jeden Fall nuetzlich an.
Dieter