MySQL Fehler - Meine Idee möglich?
dR.LoL
- datenbank
Hallo Leute,
Ich hab hier ein etwas grösseres Projekt und habe nun mittels Eclipse die Tabellen gezeichnet.
Die übernehmen wollen und dann folgt folgende Meldung:
#1005 - Can't create table './SIS/tblInstallation.frm' (errno: 121)
Mein Script sieht wie folgt aus:
CREATE TABLE SIS.tblInstallation(
Id INT NOT NULL AUTO_INCREMENT ,
Fk_tblRelServerInstallationId INT,
Fk_BasePackageId INT,
Fk_PackageId INT,
Fk_UserId INT,
AssignedDate INT( 35 ) ,
PRIMARY KEY ( Id ) ,
INDEX ( Fk_tblRelServerInstallationId ) ,
CONSTRAINT FK_tblInstallation_1 FOREIGN KEY ( Fk_tblRelServerInstallationId ) REFERENCES SIS.tblRelServerInstallation(
Id
),
INDEX ( Fk_BasePackageId ) ,
CONSTRAINT FK_tblInstallation_2 FOREIGN KEY ( Fk_BasePackageId ) REFERENCES SIS.tblPackage(
Id
),
INDEX ( Fk_PackageId ) ,
CONSTRAINT FK_tblInstallation_3 FOREIGN KEY ( Fk_PackageId ) REFERENCES SIS.tblPackage(
Id
),
INDEX ( Fk_UserId ) ,
CONSTRAINT FK_tblInstallation_4 FOREIGN KEY ( Fk_UserId ) REFERENCES SIS.tblUser(
Id
)
) TYPE = InnoDB
Jetzt die Frage, den möglichen Fehler sehe ich bei dem Punkt, dass ich zwei FK's habe, welche auf die selbe Tabelle, sogar das selbe Feld (tblPackage.Id) verweisen. (<= DAS)
Ist DAS mein Fehler oder liegt es an was anderem??
Wenn DAS mein Fehler ist, ist es irgendwie möglich aus EINER Tabelle, ZWEI FK's zu machen, welche auf EINE Tabelle zeigen?
Gruss vom LoL und Danke für eure Hilfe!
echo $begrüßung;
#1005 - Can't create table './SIS/tblInstallation.frm' (errno: 121)
CREATE TABLE SIS.tblInstallation(
Jetzt die Frage, den möglichen Fehler sehe ich bei dem Punkt, [...]
MySQL sieht den Punkt als Trennzeichen zwischen Datenbankname und Tabellenname an. Vielleicht geht es, SIS.tblInstallation
in Backticks zu schreiben. Wenn nicht, solltest du dir ein anderes Zeichen ausdenken.
Ahja... gemäß <http://dev.mysql.com/doc/mysql/en/legal-names.htmlætitle=Database, Table, Index, Column, and Alias Names>-Kapitel im Handbuch ist der Punkt nicht erlaubt.
echo "$verabschiedung $name";
Also das mit den Tabellen Database.Table das geht ;-))
Ging jedenfalls bei allen Tables bisher.
Hoffe ich hab dich jetzt nicht falsch verstanden, aber ich repetiere nochmals die Frage.
Ist es möglich, dass ich eine tbl1 habe, welche zwei FK's hat (FK1, FK2) beide FK's verweisen auf das Feld tbl2.Id (Allerdings holen sie nicht den selben Wert!)
Gruss vom LoL
echo $begrüßung;
Also das mit den Tabellen Database.Table das geht ;-))
Ah, entschuldige. Das habe ich missgedeutet, inklusive "Punkt" in "den möglichen Fehler sehe ich bei dem Punkt"
#1005 - Can't create table './SIS/tblInstallation.frm' (errno: 121)
Ich verspräche mir ja eine Auflösung des Rätsels, wenn man zu erfahren bekäme, was sich hinter "errno: 121" verbirgt. Doch leider fand ich dazu nichts hilfreiches.
echo "$verabschiedung $name";
hi,
Ich verspräche mir ja eine Auflösung des Rätsels, wenn man zu erfahren bekäme, was sich hinter "errno: 121" verbirgt.
Scheint schon irgendwas mit den Constraints zu tun zu haben (http://dev.mysql.com/doc/mysql/en/news-4-1-8.html berichtet von einem beseitigten Bug, der einen 121 auslöste.)
Doch leider fand ich dazu nichts hilfreiches.
Mal mit perror versucht?
gruß,
wahsaga
echo $begrüßung;
Ich verspräche mir ja eine Auflösung des Rätsels, wenn man zu erfahren bekäme, was sich hinter "errno: 121" verbirgt.
Mal mit perror versucht?
Nein. Das heißt, jetzt ja. Das ist die Ausgabe:
System error: 121 = Remote I/O error
MySQL error: 121 = Duplicate key on write or update
echo "$verabschiedung $name";
Hallo,
Nein. Das heißt, jetzt ja. Das ist die Ausgabe:
MySQL error: 121 = Duplicate key on write or update
http://dev.mysql.com/doc/mysql/en/innodb-monitor.html
mysql> SHOW INNODB STATUS\G
...
------------------------
LATEST FOREIGN KEY ERROR
------------------------
...Hier sollte stehen, woran es lag.
...
viele Grüße
Axel
Nein. Das heißt, jetzt ja. Das ist die Ausgabe:
System error: 121 = Remote I/O error
MySQL error: 121 = Duplicate key on write or update
Versteh ich das Problem jetzt korrekt, dass meine Idee...
Ist es möglich, dass ich eine tbl1 habe, welche zwei FK's hat
(FK1, FK2) beide FK's verweisen auf das Feld tbl2.Id (Allerdings
holen sie nicht den selben Wert!)
...Nicht geht, weil er 2mal auf die selbe selbe ID zurückgreiffen will?
Hmm, wird mir zuviel, kenn mich eben nicht soo gross mit datenbanken aus. Glaube ich Designe es mal anders...
Was meint ihr? Oder könnt ihr mir konkret sagen, was ich den machen muss?
Also der Sinn dieser zwei FK's ist es den Korrekten 1. BASEPATCH und 2.PATCH herauszuholen. Alle sind in einer tabelle tblPackage und es gibt dort ein value isBase (true, false).
Gruss vom LoL
So Leute,
Danke für eure Hilfe!
Ich konnte's anderst darstellen und nun gehts, hab einfach die beziehungstabelle und die installationstabelle in eine tabelle gepackt und den autoincrement rausgenommen von der installation, jetzt muss ich den halt immer setzen lassen (paar wenige zeilen code mehr) aber es geht =))
Danke euch für eure Hilfe!
Gruss vom LoL der nun schnell sein Geschäft erledigen wird ;-))