IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Migrer une base de données mysql 5.5 à mysql 8.0


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2019
    Messages : 23
    Par défaut Migrer une base de données mysql 5.5 à mysql 8.0
    Bonjour

    Je viens de changer de serveur qui est en MySQL 8.0
    Et ma base de donnée est sur MySQL 5.5

    Comment faire une migration en bonne et due forme.
    Car après avoir fait l'exportation en SQL puis la réimportation.
    Impossible de mettre à jour certaines tables de la base.
    J'ai l'impression qu'il se perd dans les index.

    Est ce qu'il y a un correctif pour passé la base en 8.0

    Cordialement

  2. #2
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2019
    Messages : 23
    Par défaut Inser Update Duplicate Entry Mysql 8.0
    Suite à la migration

    Voici l'erreur que cela génère lors de l import de nouveau produit dans ma base de donnée

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    [INSERT INTO PC7_PRODUCT(ID, CATEGORY_ID, TITLE, TITLE_CLEAN, FILENAME, MANUFACTURER, MANUFACTURER_CODE, EAN_UPC, MIN_PRICE, MAX_PRICE, STORE_COUNT, ISVALID, STANDBY, SPECIAL_OFFER, PAGE_TITLE, PAGE_KEYWORDS, PAGE_DESCRIPTION, FIELD_1, FIELD_2, FIELD_3, FIELD_4, FIELD_5, FIELD_6, FIELD_7, FIELD_8, FIELD_9, DATE_ADDED) VALUES('203133', '475', 'Baskets montantes Converse CHUCK TAYLOR ALL STAR CORE HI', 'Baskets montantes Converse CHUCK TAYLOR ALL STAR CORE HI', 'baskets-montantes-converse-chuck-taylor-all-star-core-hi', '72', 'M7650C', '886952780425', '0', '0', '0', 'Y', '0', 'N', '', '', '', '', '', '', '', '', '', '', '', '', '2023-02-20 21:01:09')] - Duplicate entry '203133' for key 'PC7_PRODUCT.PRIMARY' -

    Avez vu une idée de l'erreur dans la base de donnée

    Cordialement

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 352
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 352
    Billets dans le blog
    17
    Par défaut
    Ta table PC7_PRODUCT contient déjà une ligne dont la colonne ID vaut "203133".
    Peut-être un précédent import, ou un contrainte qui n'était pas présente dans la table d'origine.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 650
    Billets dans le blog
    10
    Par défaut
    bonjour,

    Si la table cible est une table vide et sans lien avec d'autres tables, alors il faut vérifier le paramétrage des identifiants (valeur initiale et incrément, voir ICI) puis charger les différentes tables sans mentionner les colonnes identifiantes dans les ordres INSERT. Ce faisant, le moteur va automatiquement ajouter les nouvelles valeurs d'identifiants.

    Si la cible n'est pas vide ou qu'elle est liée à d'autres tables à charger, alors il s'agit d'une convergence de données.
    Auquel cas il faut d'abord renuméroter les tables possédant les identifiants (les PK) en tenant compte des valeurs d'identifiants déjà présentes dans la cible, enregistrer les correspondances entre identifiant source et identifiant cible, puis propager cette correspondance dans les tables liées (celles possédant des FK).
    Une convergence de S.I. est un projet en soi, la partie technique est une chose (unicité des identifiants), mais il faut aussi identifier les doublons fonctionnels.

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 960
    Par défaut
    Salut NickyBee.

    Citation Envoyé par NickyBee
    Je viens de changer de serveur qui est en MySQL 8.0
    Petite précision, MySql est un SGBDR (Système de Gestion de Bases de Données Relationnel.

    Citation Envoyé par NickyBee
    Est ce qu'il y a un correctif pour passé la base en 8.0
    A priori non, si tu respectes le standard des bases de données.

    Citation Envoyé par NickyBee
    Avez vu une idée de l'erreur dans la base de donnée
    Tu trouves la solution en bout de ligne : "Duplicate entry '203133' for key 'PC7_PRODUCT.PRIMARY' -.
    Tu as un doublon sur l'une des valeur de ta primary key.

    Origine possible du problème : tu as oublié de vider ta table avant de la recharger.

    Est-ce que tu fusionnes plusieurs tables en une seul ?
    Dans ce cas, il faudrait effectuer une migration et non un simple bidouillage.
    Par exemple id=1 de ta deuxième table que tu fusionnes avec la première devra passer à la valeur id=1001.
    Dans ce cas, il faut modifier tous les id=1 qui sont succeptible d'être en clef étrangère pour les passer à id=1001.
    En espérant aussi, que id=1001 ne soit pas déjà utilisé dans ta première table.

    Il serait bien que tu nous indiques ce que tu fais exactement.
    Nous ne connaissons pas le contexte de ta base de données, et tout ce que nous pouvons dire ne sont que des suppositions.

    Cordialement.
    Artemus24.
    @+

  6. #6
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2019
    Messages : 23
    Par défaut
    Artemus24
    Voici ce que j'ai fait

    1 - Creer ma base de donnée sur mon nouveau serveur qui utilise mysql 8.0
    2 - Exporter mes tables en un fichier sql de mon ancienne base de donnée et ancien serveur qui utilise mysql 5.5
    3 - Importer mes tables en un fichier sql sur ma nouvelle base de donnée
    4 - Faire une mise à jour des produits de ma table
    5 - Et il y a plusieurs table dans ma base de donnée


    Et Sur une autre base de donnée j'ai une autre erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LOAD DATA LOCAL INFILE '/home/xxx/www.domaine.com/upload/merchant/34/im_product.sql' INTO TABLE xxxx_-zapoza.PC7_PRODUCT FIELDS TERMINATED BY '|' ENCLOSED BY '\'' LINES TERMINATED BY ' ' (ID, CATEGORY_ID, TITLE, TITLE_CLEAN, FILENAME, MANUFACTURER, MANUFACTURER_CODE, EAN_UPC, MIN_PRICE, MAX_PRICE, STORE_COUNT, ISVALID, STANDBY, SPECIAL_OFFER, FIELD_1, FIELD_2, FIELD_3, FIELD_4, FIELD_5, FIELD_6, FIELD_7, FIELD_8, FIELD_9, DATE_ADDED)] - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-zapoza.PC7_PRODUCT FIELDS TERMINATED BY '|' ENCLOSED BY '\'' LINES TERMINATED B' at line 1 -
    - error in file admin/product_import_feed_functions_ml.php on line # 0 : executeUpdate
    - error in file admin/product_import_feed_functions_ml.php on line # 0 : doFeedFileFinalTask
    - error in file admin/product_import_feed_functions.php on line # 0 : processFeedFileML
    - error in file admin/autofeed_cronjob.php on line # 0 : processFeedFile

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/03/2018, 19h41
  2. Migrer une base de données MySQL vers SQL Server
    Par Goupo dans le forum MS SQL Server
    Réponses: 17
    Dernier message: 04/06/2010, 09h58
  3. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41
  4. connexion a une base de donné mysql
    Par ithery75 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/02/2005, 20h57
  5. [JDBC]acces à une base de données mysql
    Par sehaba dans le forum JDBC
    Réponses: 13
    Dernier message: 07/12/2004, 00h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo