can't create table ark_entity_pmb

Bonjour
Après mise a jour a la version 7.4.6 j'ai eu ce message d'erreur au moment de la mise a jour du noyau de la base de données.
can't create table 'pmb_docu'.'ark_entity_pmb' (errno 150 'Foreign key constraint is incorrectly formed')
merci

Réponses

  • Bonjour,
    Je confirme une erreur introduite en version 7.4.5 dans pmb/admin/misc/addon.inc.php , au case 49, dans le CREATE de la table ark_entity_pmb :
    FOREIGN KEY (num_ark) REFERENCES ark(ark_id)

    Mais l'identifiant de la table ark (dont le CREATE TABLE précède immédiatement celui dont il est question) est id et non ark_id.

    Faut-il corriger le nom de l'identifiant de la table ark ou la référence dans la clef étrangère d'ark_entity_pmb ?
  • Le CREATE TABLE contient en fait 2 erreurs :
    - le nom de la colonne référencée dans FOREIGN KEY, comme indiquée précédemment,
    - le champ num_ark doit être du même type que le champ référencé : INT UNSIGNED

    Ceci passe (j'ai également ajouté la longueur de l'INT, puisqu'il est explicite sur ark.id, pourquoi prendre le risque ? ) :
               $rqt = "CREATE TABLE IF NOT EXISTS ark_entity_pmb (
                   id INT PRIMARY KEY AUTO_INCREMENT,
                   entity_type INT NOT NULL DEFAULT 0,
                   entity_id INT NOT NULL DEFAULT 0,
                   num_ark INT(10) UNSIGNED NOT NULL DEFAULT 0,
                   FOREIGN KEY (num_ark) REFERENCES ark (id)
               )";

    La question du nom de l'identifiant de la table ark demeure ouverte.
  •  Je retire ce que j'ai dit pour la longueur de l'INT : elle apparaît dans le SHOW CREATE TABLE ark, mais elle n'est pas dans le script. Seul UNSIGNED est manquant dans la définition du champ num_ark :

               $rqt = "CREATE TABLE IF NOT EXISTS ark_entity_pmb (
                   id INT PRIMARY KEY AUTO_INCREMENT,
                   entity_type INT NOT NULL DEFAULT 0,
                   entity_id INT NOT NULL DEFAULT 0,
                   num_ark INT UNSIGNED NOT NULL DEFAULT 0,
                   FOREIGN KEY (num_ark) REFERENCES ark (id)
               )";


    La question du nom de l'identifiant de la table ark demeure ouverte.
  • Merci PLeG j'ai fait le CREATE TABLE....le foreign key fait reference a la colonne id on verra si des erreurs ressortent.
Connectez-vous ou Inscrivez-vous pour répondre.