2017-02-14 12 views
0

'createtables.php'というページを実行しているテーブルを作成しようとすると、テーブル 'Ausleihe'を作成できません。MySQLエラー:テーブル定義が正しくありません。自動列が1つしかなく、キーとして定義する必要があります

<?php 
    include 'connect.php'; 
    $query = "CREATE TABLE Schueler(
     SchuelerVorname VARCHAR(30) NOT NULL, 
     SchuelerName VARCHAR(30) NOT NULL, 
     StrasseUndHausnummer VARCHAR(50) NOT NULL, 
     PLZ INT(5) NOT NULL, 
     Ort VARCHAR(50) NOT NULL, 
     SchuelerNummer INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY 
    )"; 
    $result = mysqli_query($conn, $query); 
    if(!$result) die ("Fehler beim erstellen der Tabelle 'Schueler': " .mysqli_error($conn)); 

    $query1 = "CREATE TABLE Buch(
     AutorVorname VARCHAR(30) NOT NULL, 
     AutorName VARCHAR(30) NOT NULL, 
     BuchName VARCHAR(50) NOT NULL, 
     ISBN VARCHAR(35) NOT NULL, 
     BuchNummer INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY 
    )"; 
    $result = mysqli_query($conn, $query1); 
    if(!$result) die ("Fehler beim erstellen der Tabelle 'Buch': " .mysqli_error($conn)); 

    $query2 = "CREATE TABLE Ausleihe(
     AusleihDatum DATE NOT NULL, 
     AusleihNummer INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     BuchNummer INT(6) UNSIGNED AUTO_INCREMENT, 
     SchuelerNummer INT(6) UNSIGNED AUTO_INCREMENT, 
     FOREIGN KEY (BuchNummer) REFERENCES Buch(BuchNummer), 
     FOREIGN KEY (SchuelerNummer) REFERENCES Schueler(SchuelerNummer) 
    )"; 
    $result = mysqli_query($conn, $query2); 
    if(!$result) die ("Fehler beim erstellen der Tabelle 'Ausleihe': " .mysqli_error($conn)); 
?> 

私は間違っていますか?それは外来キーのためですか?

申し訳ありませんが、私のコードは部分的にドイツ語ですが、本当に問題ではありません。

+0

FOREIGN KEY(BuchNummer)は(論理的に)自動インクリメントできません。 –

答えて

0

エラーメッセージには、問題の内容が正確に記載されています。複数の列を持つことはできません。AUTO_INCREMENT列。いずれかの列からAUTO_INCREMENT属性を削除する必要があります。おそらくこのようなものでしょう:

$query2 = "CREATE TABLE Ausleihe(
     AusleihDatum DATE NOT NULL, 
     AusleihNummer INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     BuchNummer INT(6) UNSIGNED, 
     SchuelerNummer INT(6) UNSIGNED, 
     FOREIGN KEY (BuchNummer) REFERENCES Buch(BuchNummer), 
     FOREIGN KEY (SchuelerNummer) REFERENCES Schueler(SchuelerNummer) 
     )"; 
+0

よろしく!ありがとう:)私は非常にばかげている気がします; D私は多かれ少なかれコーディングに新しいし、かなりエラーメッセージを取得していません..ごめんなさい!しかし、あなたの迅速な助けを感謝:) –

+0

心配しないでください。運が良かった! –

0

あなたのBuchとSchuelerテーブルで自動インクリメントを行う必要があります。あなたは、Matt Spinksの答えからの質問を使うべきです。

0

明らかに、mysqlエラー自体には答えがあります。 'Ausleihe'テーブルには、エラーの原因となっている3つの自動インクリメントカラムがあります。 'BuchNummer'と 'SchuelerNummer'列からAUTO_INCREMENTを削除する必要があります。そのため、 'AusleihNummer'だけが自動的にインクリメントされます。

関連する問題