Dieter Raber: MySQL Groß-, Kleinschreibung Tabellennamen

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

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. 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

      1. 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

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. 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

          1. 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