+ Auf Thema antworten
Zeige Ergebnis 1 bis 6 von 6

Thema: Tipps zur SQL Dump Syntax in TYPOlight

  1. #1
    Administrator
    Offiz. Contao-Team
    Benutzerbild von Nina
    Registriert seit
    04.06.2009.
    Ort
    Berlin
    Beiträge
    1.924
    Partner-ID
    397

    Standard Tipps zur SQL Dump Syntax in TYPOlight

    Das Installscript erwartet eine ganz korrekte database.sql beim Einlesen von Modulen. Hier können wir Tipps sammeln die etwaige Fehler beim Einlesen vermeiden:

    Richtiges Präfix
    TYPOlight parst nur Tabellen die mit dem Präfix "tl_" ausgestattet sind.

    Allgemeines zur Syntax:
    Das Vergleichstool ist darauf ausgelegt, mit SQL Dumps wie sie z.B. mit phpMyAdmin erzeugt werden zu arbeiten. Versuche daher dein Dump möglichst nach dem gleichen Schema zu erstellen.

    PRIMARY ID:
    TYPOlight erwartet in der database.sql 2 Leerzeichen zwischen PRIMARY KEY und (`id`). Vergisst man das, versucht TL im Install Tool immer den Primary Key zu droppen.

  2. #2
    Contao-Urgestein Benutzerbild von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    1.589

    Standard

    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:
    Code:
    SET sql_mode = '';
    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)

  3. #3
    Contao-Urgestein Benutzerbild von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    1.589

    Standard

    Im meinem Modul Visitors trat öfters das Problem mit dem Feldtyp "timestamp" auf, es gibt wohl einige MySQL Versionen die bei "NOT NULL" Angaben jeweils anders damit umgehen und dadurch TL zur Fehlermeldung bringt.
    Mit dieser, wenn auch eine "NULL" Variante, gibt es scheinbar weniger Konflikte:
    Code:
    `visitors_tstamp` timestamp NULL default NULL
    Ich brauchte diesen Feldtyp, da ich mittels MySQL mit der Datum / Uhrzeit rechnen wollte.

  4. #4
    Administrator
    Offiz. Contao-Team
    Benutzerbild von Nina
    Registriert seit
    04.06.2009.
    Ort
    Berlin
    Beiträge
    1.924
    Partner-ID
    397

    Standard

    Glen hat hier netterweise nochmal ein paar wichtige Infos zur database.sql hinterlegt.

  5. #5
    Contao-Nutzer Benutzerbild von hanuman
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Daumen hoch Juhu

    Zitat Zitat von BugBuster Beitrag anzeigen
    [*]bei PRIMARY KEY müssen 2 Leerzeichen folgen bevor die runde Klammer folgt (sagte Nina schon)
    ... vielen Dank euch beiden für diese Informationen.
    Ich habs übers Forum kommend auf Deiner Webseite zuerst gelesen.

    Zwei Probleme traten bei mir auf:

    Das SQL-Dump, das Sequel Pro (Mac) erzeugt hat, hatte zwei 'Fehler'.
    • DEFAULT (Großbuchstaben) statt default (Kleinbuchstaben)
    • nur 1 Leerzeichen nach PRIMARY KEY statt 2 Leerzeichen

    Gut zu wissen und schön, dass das Typolight Install Tool nun nicht mehr die Datenbank updaten möchte.
    Ist schon beeindruckend, wie 'leicht' es ist Typolight zu erweitern.
    Naja okay nicht leicht, da es gerade zum Anfang ziemlich komplex und kompliziert ist (scheint).
    Aber das kleine Stück 'Spitze des Eisberges' gefällt mir schonmal.

    Gruß
    Richard

  6. #6
    Contao-Nutzer
    Registriert seit
    24.11.2009.
    Ort
    Fläsch
    Beiträge
    56

    Standard SQL Syntax für database.sql CREATE TABLE

    Also hier noch einmal alles an einem Stück:

    1. Tabelle in Datenbank anlegen mit einem Tool (z.B. phpmyadmin)
    2. Wie von BugBuster beschrieben das CREATE Statement der Tabelle generieren lassen:
    Code:
    SHOW CREATE TABLE tl_MODULE_TABLE_NAME
    3. Statement wie folgt anpassen:
    3.1 Wie von Nina und Bugbuster gesagt die 2 Leerzeichen zwischen PRIMARY KEY und der folgenden ( sicherstellen.
    3.2 Alle DEFAULT durch default und alle AUTO_INCREMENTdurch auto_increment ersetzen.

    Wenn man 3.2 weglässt will Typolight die betreffende Spalte mit einem CHANGE Befehl anpassen. Das sähe z.B. so aus:
    Code:
    ALTER TABLE `tl_employees` CHANGE `avatare` `avatare` varchar(64) NOT NULL DEFAULT '';

+ Auf Thema antworten

Ähnliche Themen

  1. Contao-Hosting bei HostEurope
    Von Nina im Forum Erfahrungen mit Webhostern
    Antworten: 129
    Letzter Beitrag: 01.09.2010, 13:45
  2. TYPOlight-Hosting bei 1&1
    Von Nina im Forum Erfahrungen mit Webhostern
    Antworten: 178
    Letzter Beitrag: 21.08.2010, 15:54
  3. TYPOlight-Hosting bei All-Inkl Neue Medien Münnich
    Von Nina im Forum Erfahrungen mit Webhostern
    Antworten: 34
    Letzter Beitrag: 24.07.2010, 14:38
  4. TYPOlight-Hosting bei W3W
    Von Nina im Forum Erfahrungen mit Webhostern
    Antworten: 3
    Letzter Beitrag: 14.09.2009, 15:48
  5. Tipps für 2 Webseitenbetrieb
    Von janthemanson im Forum Was kann Contao?
    Antworten: 0
    Letzter Beitrag: 12.07.2009, 22:25

Forumregeln

  • Es ist dir nicht erlaubt, neue Themen zu verfassen.
  • Es ist dir nicht erlaubt, auf Beiträge zu antworten.
  • Es ist dir nicht erlaubt, Anhänge hochzuladen.
  • Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.