Ergebnis 1 bis 6 von 6

Thema: Install-Tool hat Probleme mit Composite Primary Key

  1. #1
    Contao-Nutzer
    Registriert seit
    17.07.2010.
    Beiträge
    127

    Standard Install-Tool hat Probleme mit Composite Primary Key

    Hallo zusammen,

    es schaut so aus, als ob Contao Probleme mit folgendem SQL Statement hat:
    PHP-Code:
    -- Portfolio2Categories
    CREATE TABLE 
    `tl_portfolio2cats` (
      `
    pid_portfolioint(10unsigned NOT NULL,
      `
    pid_portfolio_catsint(10unsigned NOT NULL,
      
    PRIMARY KEY  (`pid_portfolio`, `pid_portfolio_cats`)
    ENGINE=MyISAM DEFAULT CHARSET=utf8
    Es wird zwar die Tabelle erfolgreich angelegt, aber anschliessend (die install.php wird neugeladen) meldet das Install-Tool, die Datenbank sei nicht mehr aktuell und möchte u.a. folgende Aktion durchführen:
    PHP-Code:
    ALTER TABLE `tl_portfolio2catsDROP INDEX `pid_portfolio`, ADD PRIMARY KEY  (`pid_portfolio`, `pid_portfolio_cats`); 


    Diese Aktualisierung wiederum führt zu folgendem Fatal Error:
    PHP-Code:
    Fatal errorUncaught exception Exception  with message Query errorCan't DROP 'pid_portfolio'; check that column/key exists (ALTER TABLE `tl_portfolio2cats` DROP INDEX `pid_portfolio`, ADD PRIMARY KEY (`pid_portfolio`, `pid_portfolio_cats`);) thrown in C:\xampp\htdocs\myfolder\system\libraries\Database.php  on line 642 

    Die komplette database.sql lautet:
    PHP-Code:
    -- 
    -- 
    Table `tl_portfolio`
    -- 
    CREATE TABLE `tl_portfolio` (
      `
    idint(10unsigned NOT NULL auto_increment,
      `
    pidint(10unsigned NOT NULL default '0',
      `
    sortingint(10unsigned NOT NULL default '0',
      `
    tstampint(10unsigned NOT NULL default '0',
      `
    titlevarchar(255NOT NULL default '',
      `
    industryvarchar(255NOT NULL default '',
      `
    descriptionvarchar(255NOT NULL default '',
      `
    categoriestext NULL,
      `
    infotext NULL,
      `
    imagetext NULL,
      `
    tagsvarchar(255NOT NULL default '',
      `
    thumbvarchar(255NOT NULL default '',
      
    PRIMARY KEY  (`id`),
      
    KEY `pid` (`pid`)
    ENGINE=MyISAM DEFAULT CHARSET=utf8;

    -- 
    Categories
    CREATE TABLE 
    `tl_portfolio_cats` (
      `
    idint(10unsigned NOT NULL auto_increment,
      `
    titlevarchar(255NOT NULL default '',
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=utf8;

    -- 
    Portfolio2Categories
    CREATE TABLE 
    `tl_portfolio2cats` (
      `
    pid_portfolioint(10unsigned NOT NULL,
      `
    pid_portfolio_catsint(10unsigned NOT NULL,
      
    PRIMARY KEY  (`pid_portfolio`, `pid_portfolio_cats`)
    ENGINE=MyISAM DEFAULT CHARSET=utf8
    Wobei ohne der dritten Tabelle alles funktioniert. Eventuell kann jemand bei sich mal probieren... Ich komme nicht mehr weiter, brauche die Tabelle aber unbedingt

    Beste Grüsse,
    sans
    Geändert von sans (17.07.2010 um 17:40 Uhr)

  2. #2
    Contao-Fan Avatar von acenes
    Registriert seit
    13.06.2009.
    Beiträge
    407

    Standard

    Contao verwendet durchgängig einfache synthetische Keys als primary.

    Füge eine id Spalte als primary key hinzu, und lege einen index auf die 2 anderen Spalten statt diese als primary zu verwenden.
    Geändert von acenes (17.07.2010 um 17:45 Uhr)
    Erweiterungen: avatar, cron, dlstats, editarea, geshi, helpdesk, recall, rep_*, smhcheck.
    (Bitte keine Supportanfragen per PM oder E-Mail)

  3. #3
    Contao-Nutzer
    Registriert seit
    17.07.2010.
    Beiträge
    127

    Standard

    Danke für die Antwort acenes.
    PHP-Code:
    -- Portfolio2Categories 
    CREATE TABLE 
    `tl_portfolio2cats` (
      `
    idint(10unsigned NOT NULL auto_increment,
      `
    id_portfolioint(10unsigned NOT NULL
      `
    id_portfolio_catsint(10unsigned NOT NULL
      
    PRIMARY KEY  (`id`),
      
    INDEX (`id_portfolio`, `id_portfolio_cats`)
    ENGINE=MyISAM DEFAULT CHARSET=utf8
    Dadurch wird die Tabelle nun erfolgreich erstellt, aber danach meldet das Tool folgende Änderungen, die - obwohl mehrfach durchgeführt - immer wieder erscheinen:
    PHP-Code:
    ALTER TABLE `tl_portfolio2catsCHANGE `id_portfolio` `id_portfolioint(10unsigned NOT NULL;
    ALTER TABLE `tl_portfolio2catsCHANGE `id_portfolio_cats` `id_portfolio_catsint(10unsigned NOT NULL;
    ALTER TABLE `tl_portfolio2catsDROP INDEX `id_portfolio`, ADD INDEX (`id_portfolio`, `id_portfolio_cats`); 
    Kannst du vielleicht nochmal kurz helfen?

  4. #4
    Contao-Fan Avatar von acenes
    Registriert seit
    13.06.2009.
    Beiträge
    407

    Standard

    Du solltest auf jede der Spalten einen eigenen key index legen damit du konform mit dem Contao DB Installer bist. (Das ist übrigens leistungsmässig für den Lookup in deiner Verknüpfungstabelle ohnehin besser). Bei NOT NULL Spalten solltest du auch einen Default angeben:

    Code:
    -- Portfolio2Categories 
    CREATE TABLE `tl_portfolio2cats` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `id_portfolio` int(10) unsigned NOT NULL default '0', 
      `id_portfolio_cats` int(10) unsigned NOT NULL default '0', 
      PRIMARY KEY  (`id`),
      KEY `id_portfolio` (`id_portfolio`), 
      KEY `id_portfolio_cats` (`id_portfolio_cats`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Erweiterungen: avatar, cron, dlstats, editarea, geshi, helpdesk, recall, rep_*, smhcheck.
    (Bitte keine Supportanfragen per PM oder E-Mail)

  5. #5
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Lese mal hier http://de.contaowiki.org/Korrekte_database.sql_erzeugen

    1. Contao will vollständige Angaben haben, es fehlen bei dir die Default Angaben.
    2. Contao versteht generell keine Indexe, egal ob Primary oder Key, mit mehr als einem Feld.
    Bei Key funktioniert das zwar (es wird angelegt) aber er meckert weiterhin es wäre nicht korrekt. Ignorieren.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    Contao-Nutzer
    Registriert seit
    17.07.2010.
    Beiträge
    127

    Daumen hoch

    Genial, vielen Dank euch beiden Muss wohl öfters mal ins WIKI schauen...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Install-Tool: Passwort-Probleme
    Von karo im Forum Installation / Update
    Antworten: 14
    Letzter Beitrag: 18.04.2010, 17:56
  2. Install-Tool nicht erreichbar (Strato-V-Server)
    Von sparklz im Forum Installation / Update
    Antworten: 0
    Letzter Beitrag: 15.11.2009, 19:55
  3. Install Tool - Opera Browser
    Von Sonnenstrahl im Forum Installation / Update
    Antworten: 4
    Letzter Beitrag: 14.10.2009, 12:24
  4. Passwortprobleme im BackEnd + Install Tool
    Von m0mo im Forum Geschützte Bereiche/Mitglieder
    Antworten: 1
    Letzter Beitrag: 11.08.2009, 08:19
  5. The install tool has been locked
    Von snoups im Forum Installation / Update
    Antworten: 4
    Letzter Beitrag: 11.07.2009, 10:13

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •