TYPO3-konforme SQL-Anweisungen in ext_tables.sql

Auch in TYPO3 6.2 muss man noch darauf achten, wie man die SQL-Anweisungen in der Datei ext_tables.sql der eigenen Erweiterungen aufbaut, damit diese von TYPO3 „verstanden“ werden. Zwar werden die SQL-Anweisungen korrekt ausgeführt und die Tabelle wird angelegt, aber im „Database Analyser“ des Install Tools werden beim „Database Compare“ Unterschiede aufgezeigt.

So hängt z.B. die Syntax des Default-Wertes vom Spaltentyp ab:

  1. Der Spaltentyp „integer“ muss als Default-Wert DEFAULT '0' NOT NULL haben.
  2. Der Spaltentyp „varchar“ muss als Default-Wert DEFAULT '' NOT NULL haben.
  3. Der Spaltentyp „tinytext“, „text“, „mediumtext“ und „longtext“ darf keinen Default-Wert haben.
  4. Der Spaltentyp „double“ muss als Default-Wert DEFAULT '0' NOT NULL haben.

Außerdem muss man beachten:

  1. Die Anweisung „auto_increment“ muss klein geschrieben werden.
  2. Bei der Definition eines Schlüssels darf es bei den Feldern kein Leerzeichen geben.

Beispiel:

ext_tables.sql

CREATE TABLE tx_mytable (
    uid int(11) NOT NULL auto_increment,
    pid int(11) DEFAULT '0' NOT NULL,
    title varchar(255) DEFAULT '' NOT NULL,
    description text,
    image blob,
    flag tinyint(1) unsigned DEFAULT '0' NOT NULL,
    number1 int(11) DEFAULT '0' NOT NULL,
    number2 double DEFAULT '0' NOT NULL,
    latitude double(13,10) DEFAULT '0.0000000000' NOT NULL,
    date timestamp DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (uid),
    KEY parent (pid),
    KEY whatever (uid,number1)
);

Den Fehler bei Verwendung von „CURRENT_TIMESTAMP“ bekommt man nicht weg. Zwar verschwindet er, wenn man „DEFAULT ‚CURRENT_TIMESTAMP'“ schreibt, die Tabelle lässt sich mit dieser Abweisung aber nicht initial anlegen.

Sind euch noch weitere Fälle bekannt, die man beachten muss?

3 Kommentare zu “TYPO3-konforme SQL-Anweisungen in ext_tables.sql”

  1. altes problem – aber immer wieder fällt man drüber. generell muss man bei Groß-Kleinschreibung aufpassen. Zbsp. wird null und NULL oder not und NOT als unterschiedlich erkannt. auch bei timestamp und TIMESTAMP wird eine datenbank änderung vorgeschlagn.

  2. Bei der Angabe von Keys ist noch darauf zu achten, das die Felder in den runden Klammern ohne Leerzeichen anzugeben sind. Ansonsten will TYPO3 immer wieder den Key löschen und neu anlegen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.