Ankündigung

Einklappen
Keine Ankündigung bisher.

Duplicate entry '1' for key 'PRIMARY'

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Duplicate entry '1' for key 'PRIMARY'

    Moin moin!

    ich habe da ein kleines Problem mit einem Script...

    in der Tabelle Contentcollections werden Gruppen und Artikel abgespeichert bzw. eine Art Referenz

    Code:
    CREATE TABLE IF NOT EXISTS `contentcollections` (
      `collection_id` int(11) NOT NULL DEFAULT '0',
      `type` int(2) NOT NULL DEFAULT '0',
      `title` varchar(255) NOT NULL DEFAULT '',
      `author_id` int(11) NOT NULL DEFAULT '0',
      `description` longtext,
      `is_active` tinyint(1) NOT NULL DEFAULT '0',
      `created` int(11) NOT NULL DEFAULT '0',
      `changed` int(11) NOT NULL DEFAULT '0',
      `picture` text,
      PRIMARY KEY (`collection_id`),
      KEY `is_active` (`is_active`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Artikel werden in der Tabelle contents abgespeichert

    Code:
    CREATE TABLE IF NOT EXISTS `contents` (
      `content_id` int(11) NOT NULL DEFAULT '0',
      `author_id` int(11) NOT NULL DEFAULT '0',
      `type` int(2) NOT NULL DEFAULT '0',
      `title` varchar(255) NOT NULL DEFAULT '',
      `is_active` tinyint(1) NOT NULL DEFAULT '0',
      `body` longtext NOT NULL,
      `allow_comments` tinyint(1) NOT NULL DEFAULT '0',
      `collection_id` int(11) NOT NULL DEFAULT '0',
      `created` int(11) NOT NULL DEFAULT '0',
      `changed` int(11) NOT NULL DEFAULT '0',
      `trackbacks` text,
      `display_on` tinyint(1) DEFAULT '0',
      `is_html` tinyint(1) DEFAULT '1',
      PRIMARY KEY (`content_id`),
      KEY `homepage_content` (`is_active`,`display_on`,`collection_id`,`created`),
      KEY `homepage_typed_content` (`is_active`,`display_on`,`collection_id`,`type`,`created`),
      KEY `user_content` (`is_active`,`collection_id`,`author_id`,`created`),
      KEY `user_typed_content` (`is_active`,`collection_id`,`author_id`,`type`,`created`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    und Gruppen in der Tabelle

    Code:
    CREATE TABLE IF NOT EXISTS `groups` (
      `group_id` int(11) NOT NULL DEFAULT '0',
      `access_type` tinyint(1) NOT NULL DEFAULT '0',
      `reg_type` int(2) NOT NULL DEFAULT '0',
      `is_moderated` tinyint(1) NOT NULL DEFAULT '0',
      `category_id` int(11) NOT NULL DEFAULT '0',
      `header_image` text,
      `header_image_action` int(2) DEFAULT NULL,
      `display_header_image` varchar(40) DEFAULT '1',
      `extra` text,
      `group_type` varchar(64) NOT NULL DEFAULT 'regular',
      PRIMARY KEY (`group_id`),
      KEY `category_id` (`category_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    ich kann jetzt z.B. Gruppen erstellen oder Artikel schreiben über das Frontend...

    was aber das Problem ist! Sobald ein Artikel in der Tabelle Contentcollections eingetragen wird kann ich keine weiteren Gruppen anlegen! Man kann ab dann nur noch Artikel zu der Tabelle hinzufügen...

    und es erscheint immer die Fehlermeldung:

    Code:
    INSERT INTO `c1CS002`.`contentcollections` (collection_id, author_id, type, title, description, is_active, created, changed, picture) VALUES (1, 1, 1, 'Group Name', 'Group Description', 1, 1412676070, 1412676070, '') [nativecode=1062 ** Duplicate entry '1' for key 'PRIMARY']
    und das kapiere ich eben nicht denn der PRIMARY Key wird ja hoch gezählt wenn nur Gruppen angelegt werden oder nur Artikel geschrieben werden...

    Für jede Hilfe bin ich mehr als dankbar!!!

    Gruß Michael


  • #2
    Zitat von HHMichaelLo Beitrag anzeigen
    und das kapiere ich eben nicht denn der PRIMARY Key wird ja hoch gezählt wenn nur Gruppen angelegt werden oder nur Artikel geschrieben werden...

    AI zählt nicht hoch, wenn du selbst einen Wert setzt.
    Du setzt als collection_id 1 und die existiert schon.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Das ist der Insert:
      Code:
              //If exists then update else insert
              if ($this->collection_id) {
                  $sql = "UPDATE {contentcollections} SET type = ?, author_id = ?, title = ?, description = ?, changed =?, picture = ? WHERE collection_id = ?";
                  $data = array($this->type, $this->author_id, $this->title, $this->description, time(), $this->picture, $this->collection_id);
                  $res = Dal::query($sql, $data);
              } else {
                  // get id
                  $this->collection_id = Dal::next_id("ContentCollection");
                  $this->created = time();
                  $this->changed = time();
                  $this->is_active = 1;
                  $sql = "INSERT INTO {contentcollections} (collection_id, author_id, type, title, description, is_active, created, changed, picture) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
                  $data = array($this->collection_id, $this->author_id, $this->type, $this->title, $this->description, $this->is_active, $this->created, $this->changed, $this->picture);
                  $res = Dal::query($sql, $data);
              }
              Logger::log("Exit: ContentCollection::save()");
              return;
          }

      Kommentar


      • #4
        Was sagt der Entwickler des Codes dazu? Ansonsten ist die Fehlermeldung ja recht eindeutig. Da könnte man mal selbst Debugging betreiben.

        Am Rande: Ich gehe stark davon aus, dass du den Code hier nicht in dieser Form veröffentlichen darfst. IANAL.

        Kommentar


        • #5
          Zitat von mermshaus Beitrag anzeigen
          Was sagt der Entwickler des Codes dazu? Ansonsten ist die Fehlermeldung ja recht eindeutig. Da könnte man mal selbst Debugging betreiben.

          Am Rande: Ich gehe stark davon aus, dass du den Code hier nicht in dieser Form veröffentlichen darfst. IANAL.
          Marc hat meines Wissens das letzte Mal 2009 an dem Script gearbeitet, Jon hat anfang 2011 alles entfernt das nicht für eine neue Installation benötitgt wird.
          Dazu hat mir Marc vor Jahren im Chat bestätigt das ich das Script bearbeiten kann wie ich möchte... allerdings kam dann der Umzug nach Hamburg... unser Kind usw. usw. usw.
          Bis Ende diesen Jahres möchte ich zumindest die offensichtlichen Fehler behoben haben damit ab nächsten Jahr aktiv mit den Updates begonnen werden kann...

          Kommentar


          • #6
            Na dann, http://www.php.de/scriptboerse/

            Ansonsten, Problem wurde dir genannt, du müsstest nur suchen wo der Insert stattfindet, dafür braucht es keinen besonderen Suchbegriff.
            Relax, you're doing fine.
            RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

            Kommentar


            • #7
              PHP-Code:
              ini_set('display_errors',1);
              error_reporting(-1); 
              damit werden mir keine Errors gelistet... (zumindest nicht zu meinem aktuellen Problem und auch im log steht nichts warum der Fehler kommt)

              Kommentar


              • #8
                Also, ich habe ein wenig durch den Code gescrollt, aber ich behaupte mal, dass das für Externe alles nicht so ganz einfach nachzuvollziehen ist, wenn man zum Beispiel überhaupt nicht genau weiß, was da modelliert ist. Zudem steckt da ein gewisses Level an Abstraktion drin, sodass ich auch nicht mit Sicherheit sagen könnte, dass das überhaupt die passende Datei ist.

                Der Code macht grundsätzlich einen recht soliden Eindruck. (Wenn etliche Dinge auch „veraltet“ oder „suboptimal“ sind.) Das ist nicht irgendein zusammengekleistertes Script. Da hat sich schon jemand mit Ahnung ein wenig was bei gedacht. Das heißt, dass man im Zweifel vor einer reingehackten Änderung auch abwägen und gegebenenfalls überprüfen müsste, ob man nicht lediglich die Intention der Entwickler falsch interpretiert. Was du beschreibst, wirkt schließlich wie etwas, an das jemand, der so einen Code schreibt, durchaus denken würde.

                Ich schließe mich deshalb VPhs Eischätzung an. Was du erwartest, ist für uns hier nicht unbedingt zu leisten. Da müsste sich vermutlich jemand mal intensiver in den Code einarbeiten. Es mag dennoch gut sein, dass das Problem in ein paar Minuten gefunden ist, wenn man das alles vor sich hat. Schwer zu sagen.

                Kommentar


                • #9
                  Ich habe der Tabelle mal einen auto_increment hinzugefügt
                  Code:
                  CREATE TABLE IF NOT EXISTS `contentcollections` (
                    `collection_id` int(11) NOT NULL AUTO_INCREMENT,
                    `type` int(2) NOT NULL DEFAULT '0',
                    `title` varchar(255) NOT NULL DEFAULT '',
                    `author_id` int(11) NOT NULL DEFAULT '0',
                    `description` longtext,
                    `is_active` tinyint(1) NOT NULL DEFAULT '0',
                    `created` int(11) NOT NULL DEFAULT '0',
                    `changed` int(11) NOT NULL DEFAULT '0',
                    `picture` text,
                    PRIMARY KEY (`collection_id`),
                    KEY `is_active` (`is_active`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
                  und beim insert die collection_id weggelassen aber das will so auch nicht

                  Kommentar

                  Lädt...
                  X