Mise a jour chamilo
Résolu/Fermé
bleconte
Messages postés
5
Date d'inscription
lundi 20 mars 2017
Statut
Membre
Dernière intervention
22 mars 2017
-
20 mars 2017 à 15:09
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 21 mars 2017 à 10:34
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 21 mars 2017 à 10:34
A voir également:
- Mise a jour chamilo
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
- Mise a jour windows 7 - Accueil - Mise à jour
1 réponse
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
Modifié par mamiemando le 21/03/2017 à 10:36
Modifié par mamiemando le 21/03/2017 à 10:36
Bonjour,
Explication du problème
En SQL :
- toutes les tables ont des noms distincts
- dans une table donnée, toutes les colonnes ont des noms distincts
C'est nécessaire car il faut que quand tu tapes une requête SQL relatives à une colonne ou à une table, celle-ci ne soit pas ambiguë. MySQL va donc veiller à ce que tu n'ailles pas à l'encontre de ces deux règles.
Si on regarde ton message d'erreur, tu tentes de créer une colonne "max_attempts" dans la table "c_lp". Vu que cette colonne existe déjà, en ajouter une irait à l'encontre de la règle qui oblige chaque colonne d'une table à avoir un nom distinct des autres.
Résolution du problème
1) Avant toute chose, il faut sauver ta base pour que si tu te trompes, tu puisses revenir en arrière. Le plus simple pour cela est d'utiliser
Exemple : pour sauver la base toto dans le fichier dans /home/titi/backup_toto.sql :
Le fichier sera créé dans le répertoire courant. Vérifie qu'il contient bien tout ce que tu voulais sauver.
Note : Si tu as bien réalisé ton backup, tu peux restaurer la base toto en la droppant puis en rechargeant ton dump.
2) Ensuite, si on lit ton message :
assurez-vous qu'aucune table ne persiste d'une version antérieure de Chamilo. Ces tables peuvent en effet causer une erreur durant la mise à jour. En particulier, les tables des versions 1.8.* et antérieures pouvaient se répéter une fois par cours, résultant en un grand nombre de tables partageant le même préfixe. Seules les tables sans préfixe ou avec un préfixe "c_" sont légitimes dans les versions 1.9 et supérieures. Assurez-vous qu'aucune de ces anciennes tables ne persiste. Prenez une copie de sauvegarde de votre base de données (au cas où) puis supprimez-les (drop table ...).
... donc tu es sensé avoir uniquement des tables dont le nom :
- commencé par le préfixe "c_"
- n'est pas préfixé
À première vue c'est ton cas. La table qui pose problème commence par un "c_" et semble donc légitime.
Personnellement je pense que le script part du principe que cette colonne doit exister, mais n'existe pas forcément. Du coup le plus simple serait de commenter dans le script d'installation cette commande sql (en ajoutant
J'imagine que le script que tu utilises ne prend pas en compte ce cas de figure, car tester l'existence ou non d'une colonne en mysql n'est pas très simple à écrire :
https://stackoverflow.com/questions/972922/add-column-to-mysql-table-if-it-does-not-exist
Bonne chance
Explication du problème
En SQL :
- toutes les tables ont des noms distincts
- dans une table donnée, toutes les colonnes ont des noms distincts
C'est nécessaire car il faut que quand tu tapes une requête SQL relatives à une colonne ou à une table, celle-ci ne soit pas ambiguë. MySQL va donc veiller à ce que tu n'ailles pas à l'encontre de ces deux règles.
Si on regarde ton message d'erreur, tu tentes de créer une colonne "max_attempts" dans la table "c_lp". Vu que cette colonne existe déjà, en ajouter une irait à l'encontre de la règle qui oblige chaque colonne d'une table à avoir un nom distinct des autres.
Résolution du problème
1) Avant toute chose, il faut sauver ta base pour que si tu te trompes, tu puisses revenir en arrière. Le plus simple pour cela est d'utiliser
mysqldump.
Exemple : pour sauver la base toto dans le fichier dans /home/titi/backup_toto.sql :
mysqldump -u root -p toto > /home/titi/backup_toto.sql
Le fichier sera créé dans le répertoire courant. Vérifie qu'il contient bien tout ce que tu voulais sauver.
Note : Si tu as bien réalisé ton backup, tu peux restaurer la base toto en la droppant puis en rechargeant ton dump.
mysql -u root -p -e "drop database toto"
mysql -u root -p < /home/titi/backup_toto.sql
2) Ensuite, si on lit ton message :
assurez-vous qu'aucune table ne persiste d'une version antérieure de Chamilo. Ces tables peuvent en effet causer une erreur durant la mise à jour. En particulier, les tables des versions 1.8.* et antérieures pouvaient se répéter une fois par cours, résultant en un grand nombre de tables partageant le même préfixe. Seules les tables sans préfixe ou avec un préfixe "c_" sont légitimes dans les versions 1.9 et supérieures. Assurez-vous qu'aucune de ces anciennes tables ne persiste. Prenez une copie de sauvegarde de votre base de données (au cas où) puis supprimez-les (drop table ...).
... donc tu es sensé avoir uniquement des tables dont le nom :
- commencé par le préfixe "c_"
- n'est pas préfixé
À première vue c'est ton cas. La table qui pose problème commence par un "c_" et semble donc légitime.
Personnellement je pense que le script part du principe que cette colonne doit exister, mais n'existe pas forcément. Du coup le plus simple serait de commenter dans le script d'installation cette commande sql (en ajoutant
--devant la/les ligne(s) correspondante(s)).
J'imagine que le script que tu utilises ne prend pas en compte ce cas de figure, car tester l'existence ou non d'une colonne en mysql n'est pas très simple à écrire :
https://stackoverflow.com/questions/972922/add-column-to-mysql-table-if-it-does-not-exist
Bonne chance