#1064 - You have an error in your SQL syntax

Blubb

Neuer Benutzer
Beiträge
4
Ich kriege immer die Fehlermeldung "#1064 - You have an error in your SQL Syntax"

CREATE TABLE daten
(
daten_id (8) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
daten_typ (20) varchar NOT NULL
);

Weis jemand woran das liegt ?
 
Werbung:
Ja,

der Datentyp fehlt

Code:
CREATE TABLE `daten` (
  `daten_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `daten_typ` varchar(20) DEFAULT NOT NULL,
  PRIMARY KEY (`daten_id`)
) ENGINE=InnoDB ;

Gruss

Bernd
 
Sorry,...

Code:
mysql>
mysql> CREATE TABLE `daten` (
    ->   `daten_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    ->   `daten_typ` varchar(20) NOT NULL DEFAULT '',
    ->   PRIMARY KEY (`daten_id`)
    -> ) ENGINE=InnoDB ;
Query OK, 0 rows affected (0,16 sec)

mysql>

Gruss

Bernd
 
Thx, jetzt hats geklapt.
Hätte aber noch 3 Fragen.
Zum einen warum hast du den int von 8 auf 11 geändert ?
Wozu bei dem varchar das DEFAULT ' '?
Und wozu das unsigend beim int ?
Da weis ich zwar was es macht aber das macht aber nicht warum es hier eingesetzt werden muss.
 
Thx, jetzt hats geklapt.
Hätte aber noch 3 Fragen.

1) INT(8/11) !! ist der DEFAULT-Wert. Der Wert hat keinen Einfluss auf die Größe einer INT,
sondern gibt nur die Anzahl der Ziffern an, die mit "0" aufgefüllt werdenwenn zerrofill angegebe wird.

Beispiel:
Code:
CREATE TABLE `daten` (
  `daten_id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `daten_typ` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`daten_id`)
) ENGINE=InnoDB;

Code:
mysql> select * from daten;
+-------------+-----------+
| daten_id    | daten_typ |
+-------------+-----------+
| 00000000001 | a         |
| 00000000002 | b         |
+-------------+-----------+
2 rows in set (0,00 sec)

mysql>


2) Das wenn kein Wert für dieses Feld angegeben wird dort ein leerer String eingetragen wird.

3) Unsigend bedeutet das die Zahl Vorzeichlos ist. Da es sich um ein Autoincrement Feld handelt
wird dies von 1,2,3...,9999 immer weiter hochgezählt. Die Werte sind dann immer positiv. DAher brauchst
du kein Vorzeichen und der Bereich der Zahl kann doppelt so groß werden. (siehe MySQL Datentypen)
 
Werbung:
1) Das wusste ich. Es sollten auch 6 Stellen reichen.
Ich habe mich nur gewundert warum du eine 11 daraus gemacht hast.
Oder hat das keine Bedeutung.

2) Ich dachte NOT NULL bedeutet das man einen Wert angeben muss und das Feld nicht leer lassen darf.

3) Die Bedeutung von Unsigend kannte ich. Allerdings habe ich schon das ein oder andere mal das Problem gehabt das ich eine Fehlermeldung bekam und als ich es gestrichen hatte hat es geklappt.
 
Zurück
Oben