MySQL Create Table funktioniert...INSERT INTO nicht!

jim.panse

Neuer Benutzer
Beiträge
3
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?
 
Werbung:
sprich den Tabellennamen in lower cases, funktioniert die Ausführung des Befehls.


Jemand eine Idee?

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.
 
Gut, danke! Dann ändere ich in der DB einfach die Tabellenamen in Großbuchstaben. Dann sollte es ja gehen.

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.
 
Das Video2Brain Tutorial geht davon aus, dass man die Datenbank auf einer Windows-Maschine laufen lässt...wo der "Fehler" nicht auftritt.

Besser wäre natürlich, MySQL gleich gegen was funktionierendes auszutauschen
Keine Sorge! In der Firma verwenden wir Oracle. Für Zuhause zum Üben muss MySQL reichen :-)
 
Werbung:
Zurück
Oben