So ist meine Vorgehensweise:
1. SQL Mode überprüfen. (Wird bei den meisten nicht relevant sein) Typolight arbeitet unter MySQL nicht im Strictmodus, welcher Standardmäßig auch aus ist. Einfach im phpMyAdmin oder auf der Konsole eingeben und kontrollieren das der Wert leer ist:
Code:
SHOW VARIABLES LIKE 'sql_mode';
Wenn nicht leer folgendes eingeben:
2. Nun lassen wir uns das create statement zurückgeben:
Code:
SHOW CREATE TABLE tl_MODULE_TABLE_NAME
MODULE_TABLE_NAME müsst ihr natürlich durch den Tabellen Namen ersetzen.
Leider funktioniert das nicht ganz bei Feldern die NULL sein dürfen.
Andererseits einfach merken, immer den vollständigen Syntax nehmen:
Code:
NAME TYP[(WIDTH, PRECISION, SCALE)] [NOT] NULL default VALUE
Hier mal ein SQL CREATE Statement mit einigen meist gebrauchten Kombinationen:
Code:
CREATE TABLE `tl_sqltest` (
`id` int(10) unsigned NOT NULL auto_increment,
`pid` int(10) unsigned NOT NULL default '0',
`sorting` int(10) unsigned NOT NULL default '0',
`tstamp` int(10) unsigned NOT NULL default '0',
`decimal_demo1` decimal(20,4) NOT NULL default '100.0000',
`decimal_demo2` decimal(20,0) NOT NULL default '100',
`varchar_demo1` varchar(32) NOT NULL default 'demo',
`varchar_demo2` varchar(64) NOT NULL default '',
`char_demo1` char(1) NOT NULL default 'A',
`char_demo2` char(1) NOT NULL default '',
`text_demo1` text NOT NULL,
`int_null_demo` int(10) NULL default NULL,
`decimal_null_demo` decimal(20,4) NULL default NULL,
`varchar_null_demo` varchar(32) NULL default NULL,
`char_null_demo` char(1) NULL default NULL,
`text_null_demo` text NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `varchar_demo1` (`varchar_demo1`),
KEY `pid` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- bei PRIMARY KEY müssen 2 Leerzeichen folgen bevor die runde Klammer folgt (sagte Nina schon)
- blob/text Felder (auch die Untertypen tinytext,...) dürfen laut MySQL keinen Default Wert haben, daher ist es hier richtig diesen wegzulassen.
- der Name des Unique Keys und des normalen Keys muss identisch sein mit dem Feldnamen der in Klammern steht.
- ein Key der über mehrere Felder angelegt werden könnte, wird von TL nicht akzeptiert (funktioniert aber)