• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mysql -- id -- Typ?

Excelsion

Neues Mitglied
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... :/

Danke im Voraus!
 
Hi,
danke für die Antwort!

Hier ist der Fehler der ausgegeben wird:

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

?
 
Hier ist der Fehler der ausgegeben wird:

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

?
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;

MySQL meldet:
#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

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

Sollte es nicht gehen, nenn mal bitte noch die MySQL-Version.
 
Ich verstehe einfach nicht warum er die Storynummer nicht als ID übernehmen will.
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.
 
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!)
 
Die Tabelle ist nicht in CSV gespeichert. (siehe oben)

Wieso?
Oben steht doch, dass du die Tabellen als CSV anlegst.
`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;

Auch bei NULL wird "0000" angegeben. Ich möchte aber gern das es leer bleibt also ""
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
 
Wieso?
Oben steht doch, dass du die Tabellen als CSV anlegst.

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.

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 bin mir eigentlich sicher das ich genau das jedes Mal gemacht habe. Nichts eingetragen Beziehungsweise die 0000 gelöscht.
 
Code:
CREATE TABLE `industriemeister` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `year` year(4) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

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

Code:
mysql> SELECT * FROM industriemeister;
+----+------+
| id | year |
+----+------+
|  1 | NULL |
+----+------+
1 row in set (0.00 sec)
 
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.
 
Zurück
Oben