Was ist falsch mit dieser mysql-Abfrage?
Dies funktioniert:
CREATE TABLE shoutbox_shout (
shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id INT UNSIGNED NOT NULL DEFAULT 0,
shout_date INT UNSIGNED NOT NULL DEFAULT 0,
message MEDIUMTEXT NOT NULL,
KEY shout_date (shout_date)
)
...während dieser:
CREATE TABLE shoutbox_shout (
shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL DEFAULT 0,
shout_date INT UNSIGNED NOT NULL DEFAULT 0,
message MEDIUMTEXT NOT NULL,
KEY shout_date (shout_date)
)
...Ergebnisse, in:
Fehler-Code: 1075 - Incorrect table definition; es kann nur eine auto Spalte und es muss als Schlüssel definiert
Ich fügte hinzu, primary key aber immer noch die Fehlermeldung.
- Kannst du den genauen text des Fehlers?
- Dein code funktionierte gut hier. Mit mysql 5.0.5 per phpmyadmin.
- Ich bekomme keine Fehler beim Versuch zu laufen, kann ich nur den Fehler reproduzieren, wenn ich entfernen 'primary key', wie Sie sagte. Komisch.
- funktioniert bei mir (mysql 5.1.36, von der shell aus), zu.
- Seltsam, es funktioniert, wenn ich führen Sie es einfach in PHPMYADMIN aber nicht in php-Funktion. Etwas arbeiten muss falsch in der php-Seite der Dinge.
- (zu spät zum Spiel) funktioniert bei mir: 5.1.49-3
- Diese Frage ist gebrochen. "Ich fügte hinzu, primary key aber immer noch Fehler" am Ende, obwohl es eingeführt, ein Beispiel mit dem Primärschlüssel "Arbeit"Dipl. - ing.
- Einem moderator bearbeitet meinem ursprünglichen post.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zitat Bug #45987, FEHLER 1075 (42000): Falsche Tabellendefinition:
MyISAM ist nicht mehr der Standard-Motor, InnoDB ist.
Auch: http://bugs.mysql.com/bug.php?id=60104
Abschluss
InnoDB unterstützt keine AUTO_INCREMENT-aber keine primary key wird für die Tabelle definiert, aber MyISAM tut. Wählen Sie, welche engine (MyISAM oder InnoDB), die Sie verwenden möchten, und befassen sich mit der CREATE TABLE-Anweisung entsprechend.
Nun, ich bin kein mysql-Experte, aber
shout_id INT UNSIGNED not NULL AUTO_INCREMENT
ist ein "auto increment", nicht definiert als Schlüssel....
Angesichts der vielen unklaren oder irreführenden Fehlermeldungen, die wir erleben in diesem Geschäft, ich kann mir nicht vorstellen, eine klarere Fehlermeldung ....
+1 für die Verwendung von unsigned etc.. aber du sagst es... es kann nicht null... ABER standardmäßig ist es auf 0 ist.. und für mich ist 0 immer null ist ? und eine primary key-das ist auto_increment ist NIE null..
Ihr ziemlich in die gute Richtung, aber tun Sie es auf diese Weise:
@Brandon_R: ich habe den gleichen Fehler mit Kommandozeile von MySQL 5.0.67-community-nt, mit dem code, wie dies funktioniert, obwohl -
definieren Sie eine auto_increment-Spalte als Primärschlüssel/Schlüssel
oder
Sollten Sie auch definieren Sie Ihre Motor-Typ - ich würde empfehlen, zu erstellen.
Schön zu sehen, verwenden Sie Ganzzahl-Datentypen ohne Angabe dumme optionale Anzeige-Breite !!
Nicht den Fehler, erklären diese kurz und prägnant? Die AUTO_INCREMENT-Spalte — wenn Sie eine haben — muss eine key-Spalte.
Als Sie zeigen, die es so behebt das problem.