Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MySQL Create Table funktioniert...INSERT INTO nicht!

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von jim.panse, 9 März 2014.

  1. jim.panse

    jim.panse Neuer Benutzer

    Hallo,

    ich habe eine Musterdatebank für MySQL bekommen um damit diverse Übungen durchzuführen. Diese wollte ich per Workbench 6.0 in meine Datenbank importieren. (MySQL 5.5.36 auf RHEL 6.5). Die SQL-Datei enthält über 1000 Statements. Nun habe ich folgendes Problem, beim ausführen werden die Tabellen zwar erstellt aber dann im Anschluss nicht mit Daten befüllt. Hier ein Auszug der SQL-Datei:

    Code:
    CREATE TABLE wawi.status(
        stid tinyint NOT NULL,
        text varchar(20) NOT NULL,
        CONSTRAINT pk_status PRIMARY KEY (stid)
    );
    
    
    INSERT INTO wawi.STATUS( STID, TEXT) VALUES( 1, 'Erfasst');
    INSERT INTO wawi.STATUS( STID, TEXT) VALUES( 2, 'Abgeschlossen');
    INSERT INTO wawi.STATUS( STID, TEXT) VALUES( 9, 'Storniert');
    
    Das Ganze bricht mit der Meldung
    Code:
    INSERT INTO wawi.STATUS( STID, TEXT) VALUES( 1, 'Erfasst‘ )    Error Code: 1146. Table 'wawi.STATUS' doesn't exist    0.002 sec
    
    beim ersten Insert ab.

    Ändere ich nun das Statement von
    Code:
    INSERT INTO wawi.STATUS( STID, TEXT) VALUES( 1, 'Erfasst');
    
    in
    Code:
    INSERT INTO wawi.status( STID, TEXT) VALUES( 1, 'Erfasst');
    
    sprich den Tabellennamen in lower cases, funktioniert die Ausführung des Befehls.


    Das komische ist, auf einem lokal auf meinem MacBook installierten MySQL-Server funktioniert der Import des gesamten "SQL-Skripts" ohne Problemen. (PS: Die Datei ist von Video2Brain, also an dieser liegt es nicht.)

    Ich habe nun schon alle möglichen Versionen installiert und ausprobiert - immer tritt das gleiche Problem auf. Die Rechte auf der DB schließe ich auch aus, da es mit klein geschriebenen Tabellennamen ja funktioniert.

    Jemand eine Idee?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Ja. MySQL funktioniert nur zufällig. Zum Beispiel ist es, je nach OS, case-sensitive oder auch nicht. Manchmal muß man, wenn man Großbuchstaben in Bezeichnern verwendet, diese in irgend welche Hochkommas packen, manchmal nicht. Manche Dinge akzeptiert MySQL von der Syntax, weil es die Norm fordert, beachtet diese aber nicht (z.B. CHECK-Constraints), an anderen Stellen mißachtet MySQL die SQL-Normen komplett.

    MySQL ist nur bedingt als brauchbare Datenbank zu bezeichnen, es gibt bessere Alternativen.
     
  3. Hony%

    Hony% Datenbank-Guru

    Das liegt daran, dass MySQL Datenbank- und Tabellennamen im Dateiverzeichnis abbildet. Hängt also direkt vom verwendeten Dateisystem ab.
     
  4. jim.panse

    jim.panse Neuer Benutzer

    Gut, danke! Dann ändere ich in der DB einfach die Tabellenamen in Großbuchstaben. Dann sollte es ja gehen.
     
  5. akretschmer

    akretschmer Datenbank-Guru

    https://dev.mysql.com/doc/refman/5.1/de/name-case-sensitivity.html
    "Damit Sie diesen Unterschieden möglichst wenig Beachtung schenken müssen, sollten Sie am besten eine konsistente Benennungskonvention verwenden, in der Datenbanken und Tabellen immer mit aus Kleinbuchstaben bestehenden Namen erstellt und referenziert werden. Eine solche Konvention wird im Sinne maximaler Portabilität und Benutzerfreundlichkeit empfohlen."

    Besser wäre natürlich, MySQL gleich gegen was funktionierendes auszutauschen.
     
    Hony% gefällt das.
  6. jim.panse

    jim.panse Neuer Benutzer

    Das Video2Brain Tutorial geht davon aus, dass man die Datenbank auf einer Windows-Maschine laufen lässt...wo der "Fehler" nicht auftritt.

    Keine Sorge! In der Firma verwenden wir Oracle. Für Zuhause zum Üben muss MySQL reichen :)
     
  7. Hony%

    Hony% Datenbank-Guru

    Dann nimm PostgreSQL. Die beiden DBMS (PG & Oracle) sind sich relativ ähnlich.
     
    Zuletzt bearbeitet: 10 März 2014
    akretschmer gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden