Mysql -- id -- Typ?

Hallo,
habe grade die Datenbank sowie ‚accounts‘ Tabelle angelegt, für mein neues Projekt.
Natürlich habe ich in der Accounts-Tabelle auch die Spalte ‚id‘…

Beim letzten mal hats mit dem Auto_Increment doch auch alles super geklappt… Irgendwie komm ich gerade nicht auf den Fehler :oops:

Er will einfach nicht übernehmen, dass ‚id‘ ein auto_increment werden soll!

Welchen Typ soll das ID feld haben? Bestimmte Länge? Und was ist mit der Kollation?

Ich stolper gerade einfach nicht über den Fehler… :confused:

Danke im Voraus!

unsigned int

Hi,
danke für die Antwort!

Hier ist der Fehler der ausgegeben wird:

 [B]MySQL meldet: [/B][http://mysql.lima-city.de/themes/original/img/b_help.png](http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html) 

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

?

Fehler gefunden…
Kann geclosed werden >.>

Der Fehler hatte aber nichts mit deiner Frage zu tun?
Du darfst nur eine Spalte als auto-icrement definieren.

Gleiches Problem

Hi ich bin gerade dabei meine erste Tabelle zu erstellen.
Ich bin dabei (so weit ich das sehe vorgegangen wie es sein muss) mein id heist Storynummer (aber der name spielt ja keine Rolle.

Storynummer INT( 3 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Storyname VARCHAR( 50 ) NOT NULL ,
Zweitname VARCHAR( 50 ) NOT NULL ,
Erstellt YEAR( 4 ) NOT NULL ,
Überarbeitet YEAR( 4 ) NOT NULL ,
FSK18 TEXT NOT NULL ,
url VARCHAR( 30 ) NOT NULL ,
Beschreibung TEXT NOT NULL
) ENGINE = CSV CHARACTER SET utf8 COLLATE utf8_general_ci;

      [B]MySQL meldet: [/B][http://mysql23598.phpmy.kontent.com/phpmyadmin/themes/original/img/b_help.png](http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html) 

#1164 - The used table type doesn’t support AUTO_INCREMENT columns

Ich verstehe einfach nicht warum er die Storynummer nicht als ID übernehmen will.
Typ = int, unsigned, auto_increment, primär

Das muss doch eingentlich klappen

Änder die betreffende Zeile in

  `Storynummer` INT( 40 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

Sollte es nicht gehen, nenn mal bitte noch die MySQL-Version.

Es scheint als wenn die Datenbank in einem anderen Format als CSV gespeichert werden musste. ? Als MylSAM !

Weil es eine CSV Tabelle ist, steht auch in der Fehlermeldung.

Warum möchtest du denn dieses Format benutzen?
Das ist nicht unbedingt die beste Wahl, wenn du mit der Datenbank arbeiten möchtest, eher die Schlechteste.

Weil in er Anleitung was davon stand das MylSAM der standart ist.
Ich habe es ausprobiert und es klappte.

bei csv hat er die id ja nicht genommen. Warum auch immer?
Storynummer soll ja ein Auto_imcrement feld sein

by that way: gibt es eine Möglichkeit ein Feld „year“ statt 0000 auf Leer zu setzen.

Ja „year“ NULL statt „NOT NULL“ geben.

CSV kennt eben keine Sequenzen, da es eine einfache Textdatei ist: CSV (Dateiformat)

Außerdem ist InnoDB die Standard-Datenbankengine seit 5.5

Die Tabelle ist nicht in CSV gespeichert. (siehe oben)
Auch bei NULL wird „0000“ angegeben. Ich möchte aber gern das es leer bleibt also „“

Dann werden NULL-Werte für Year-Typen umgewandelt. Kurz: dann wird das nicht gehen, nimm dann lieber ein tinyint(4) (wenn es wirklich nötig ist!)

Wieso?
Oben steht doch, dass du die Tabellen als CSV anlegst.

Dann machst du etwas falsch. NULL wird nicht umgewandelt.

EDIT: Ach so, wenn du einen Leerstring einfügen willst, dann wandelt mysql natürlich diesen ungültigen Wert um. Du musst also NULL einfügen (oder am besten gar nichts) wenn du keinen Wert für das Jahr hast

Ich habe geschrieben

Es scheint als wenn die Datenbank in einem anderen Format als CSV gespeichert werden musste. ? Als MylSAM !
Dann machst du etwas falsch. NULL wird nicht umgewandelt.

ich bin mir eigentlich sicher das ich genau das jedes Mal gemacht habe. Nichts eingetragen Beziehungsweise die 0000 gelöscht.

CREATE TABLE `industriemeister` ( `id` int(11) NOT NULL AUTO_INCREMENT, `year` year(4) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `industriemeister` (`id`, `year`) VALUES (NULL, NULL);

mysql> SELECT * FROM industriemeister; +----+------+ | id | year | +----+------+ | 1 | NULL | +----+------+ 1 row in set (0.00 sec)

Ich nutze ja eine MySQL vom Privider

[ATTACH]1934.vB[/ATTACH]

Auch dort kannst du normale SQL-Befehle ausführen (SQL-Tab). Aber meine Tabellenstruktur dort oben ist auch nicht mehr als ein Export aus phpMyAdmin.

Jedenfalls ist das ein Beispiel, wie du einen NULL-Wert in das Feld bekommst.

Nichts ist nicht NULL