每当我尝试创建名为' createtables.php'的页面时,它就无法创建表格' Ausleihe'。
<?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 :(得分: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)
)";
答案 1 :(得分:0)
应在Buch和Schueler表上进行自动增量。您应该使用来自Matt Spinks的查询答案。
答案 2 :(得分:0)
显然mysql错误本身就有答案。 &#39; Ausleihe&#39;表有三个自动递增列,导致错误。你必须从&#39; BuchNummer&#39;中删除AUTO_INCREMENT。和&#39; SchuelerNummer&#39;这样的专栏只有&#39; AusleihNummer&#39;将保留自动增量。