Jump to content

Fusion de tables SQL - Presta 1.1 vers 1.6


Recommended Posts

Hello tout le monde...

Moi c'est Julien, en phase avec la plupart des concepts du 21e siècle, dont celui des cyber-sauveteurs!!

Les gars, HELP!!

 

Pour vous résumer simplement le souci, j'ai entre les mains une BDD presta 1.1 et je dois évoluer vers 1.6 pour plein de raison dont la plus évident...1.1 WTF ca existe encore??

 

Bref, la table anciennement ps_customer doit être récupérée pou rla nouvelle BDD 1.6 seulement impossible de faire un import tout simple.

J'ai regardé dans la structure des tables 1.1 et 1.6, et la 1.6 affiche bien évidement des colonnes qui n'existent pas dans la 1.1 (sans parler de l'ordre des colonnes déjà présentent qui n'est pas le même non plus).

 

Ma question est la suivante:

J'ai créé les colonnes manquantes, j'ai réorganisé les colonnes, mais rien n'y fait, je n'arrive pas à faire un import.

J'ai même  essayé de renommer simplement la table, et ça fonctionne, mais évidemment pas exploitable dans l'utilisation courante du site (connexion impossible pour les anciens clients, création impossible de nouveaux comptes...).

 

Quelqu'un aurait une idée pour fusionner les 2 tables?

 

La structure 1.1:

CREATE TABLE IF NOT EXISTS `ps_customer` (
  `id_customer` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `id_shop_group` int(11) unsigned NOT NULL DEFAULT '1',
  `id_shop` int(11) unsigned NOT NULL DEFAULT '1',
  `id_gender` int(10) unsigned NOT NULL,
  `id_default_group` int(10) unsigned NOT NULL DEFAULT '1',
  `id_lang` int(10) unsigned DEFAULT NULL,
  `id_risk` int(10) unsigned NOT NULL DEFAULT '1',
  `company` varchar(64) DEFAULT NULL,
  `siret` varchar(14) DEFAULT NULL,
  `ape` varchar(5) DEFAULT NULL,
  `firstname` varchar(32) NOT NULL,
  `lastname` varchar(32) NOT NULL,
  `email` varchar(128) NOT NULL,
  `passwd` varchar(32) NOT NULL,
  `last_passwd_gen` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `birthday` date DEFAULT NULL,
  `newsletter` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `ip_registration_newsletter` varchar(15) DEFAULT NULL,
  `newsletter_date_add` datetime DEFAULT NULL,
  `optin` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `website` varchar(128) DEFAULT NULL,
  `outstanding_allow_amount` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `show_public_prices` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `max_payment_days` int(10) unsigned NOT NULL DEFAULT '60',
  `secure_key` varchar(32) NOT NULL DEFAULT '-1',
  `note` text,
  `active` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `is_guest` tinyint(1) NOT NULL DEFAULT '0',
  `deleted` tinyint(1) NOT NULL DEFAULT '0',
  `date_add` datetime NOT NULL,
  `date_upd` datetime NOT NULL,
  PRIMARY KEY (`id_customer`),
  KEY `customer_email` (`email`),
  KEY `customer_login` (`email`,`passwd`),
  KEY `id_customer_passwd` (`id_customer`,`passwd`),
  KEY `id_gender` (`id_gender`),
  KEY `id_shop_group` (`id_shop_group`),
  KEY `id_shop` (`id_shop`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

Structure 1.6:

CREATE TABLE IF NOT EXISTS `mod607_customer` (
  `id_customer` int(10) unsigned NOT NULL,
  `id_shop_group` int(11) unsigned NOT NULL DEFAULT '1',
  `id_shop` int(11) unsigned NOT NULL DEFAULT '1',
  `id_gender` int(10) unsigned NOT NULL,
  `id_default_group` int(10) unsigned NOT NULL DEFAULT '1',
  `id_lang` int(10) unsigned DEFAULT NULL,
  `id_risk` int(10) unsigned NOT NULL DEFAULT '1',
  `company` varchar(64) DEFAULT NULL,
  `siret` varchar(14) DEFAULT NULL,
  `ape` varchar(5) DEFAULT NULL,
  `firstname` varchar(32) NOT NULL,
  `lastname` varchar(32) NOT NULL,
  `email` varchar(128) NOT NULL,
  `passwd` varchar(32) NOT NULL,
  `last_passwd_gen` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `birthday` date DEFAULT NULL,
  `newsletter` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `ip_registration_newsletter` varchar(15) DEFAULT NULL,
  `newsletter_date_add` datetime DEFAULT NULL,
  `optin` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `website` varchar(128) DEFAULT NULL,
  `outstanding_allow_amount` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `show_public_prices` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `max_payment_days` int(10) unsigned NOT NULL DEFAULT '60',
  `secure_key` varchar(32) NOT NULL DEFAULT '-1',
  `note` text,
  `active` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `is_guest` tinyint(1) NOT NULL DEFAULT '0',
  `deleted` tinyint(1) NOT NULL DEFAULT '0',
  `date_add` datetime NOT NULL,
  `date_upd` datetime NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

Please...ca fait 8 jours je piétine et je n'ai pas osé ouvrir de topic.

 

A très vite!

Link to comment
Share on other sites

Deux solutions :

- Tu clones ta boutique 1.1 et tu fais un update manuel vers 1.4.11 puis 1 click upgrade vers 1.6. Tu auras alors ta table au format 1.6

- Tu prends le répertoire install/sql de ps 1.6. Dedans il y a tous les updates du schéma pour chaque mise à jour.

 

N'oublies pas de conserver les mêmes Keys dans /config/settings.inc.php pour que les mots de passe des clients conservent le même cryptage

Edited by Johann (see edit history)
Link to comment
Share on other sites

Hello... ta réponse est inespérée.

Personne jusque là ne l'avait fait (même en dehors du forum)

 

Si je peux me permettre:

 

Tu clones ta boutique 1.1 et tu fais un update manuel vers 1.4.11 puis 1 click upgrade vers 1.6. Tu auras alors ta table au format 1.6

 

C'est exactement ce que je voulais faire, c'est une idée que je ne pensais pas illogique.

Seulement, la migration manuelle est "complexe" a priori, je ne suis pas arrivé à trouver une procédure en fait.

Quels dossiers reprendre, lesquels sont à insérer, lesquels à sauvegarder, lesquels à supprimer...enfin voilà tout ça quoi.

 

 

- Tu prends le répertoire install/sql de ps 1.6. Dedans il y a tous les updates du schéma pour chaque mise à jour.

N'oublies pas de conserver les mêmes Keys dans /config/settings.inc.php pour que les mots de passe des clients conservent le même cryptage

 

Pour cette méthode, j'ai donc pris le dossier en question où effectivement tu as une liste de SQL pour chaque version évoluée de PS.

Là où je bloque, c'est de quelle manière procéder... Est ce que je dois faire un import de chaque .sql l'un après l'autre pour que les tables se mettent à jour? Est ce que je dois reprendre chaque table et suivant le schéma du fichier .sql ajouter ce qu'il faut? Est ce que je planche sur la seule table qui m'intéressent?

 

Quant aux keys... a vrai dire, je ne suis pas encore arrivé à ce "problème", quand j'aurais fini le up, je verrai à quoi correspond ton message.

 

Merci encore pour ta réponse.

Link to comment
Share on other sites

Pour tout te dire, la 2e solution est tellement chiante qu'elle n'est presque que théorique. Ii faudrait en effet passer tous les scripts les uns après les autres, en replacant les PREFIX_, et en ne retenant que les tables qui t'intéressent). Autant dire que tu vas bien m'emmerder...

 

Par contre, la 1ere solution est tout à fait réalisable (je n'ai pratique des 100aines de fois). Le module 1 click upgrade n'étant apparu qu'en cours de version 1.4.x (et pas compatible avant), il faut faire une mise à jour manuelle vers un PS 1.4.11.1 (la dernière PS 1.4). Un petit tuto sur mon site : http://www.johanncorbel.fr/mise-a-jour-manuelle-prestashop/

Ensuite, tu utilises le module 1-click upgrade pour passer à la dernière release 1.6 (passe pas en 1.7 !!!)

Et comme tu fais cette procédure sur un clone (local par exemple) du site juste pour avoir une mise à jour du schema de la BDD, tu n'as pas à t'occuper des pb de modules ou thèmes incompatibles.

 

Mais cette procédure est strictement la même si tu veux réellement faire la mise à jour du site en PS 1.6. Je te conseille néanmoins de tester tout ça sur un clone avant de le faire en production

Bon courage !
 

Link to comment
Share on other sites

Je suis de retour avec des infos croustillantes...

 

J'ai suivi ton tuto à la lettre.

Évidement on ne s'attend pas à ce que je vienne et dise "Ouaaaah, super ca marche du premier coup!!"

C'est du Prestashop les gars, faut pas rêver :rolleyes: 

 

Quoiqu'il en soit, j'ai un message d'erreur au passage de l'étape 2 à l'étape 3 de l'upgrade: ajax error /  parsererror

Je ne comprends pas pourquoi ca ne passe pas.

 

Quand je cherche à faire précédent et suivant, il me dit que ma version est déjà celle upgradée, autrement dit il a même réécrit des fichiers que je ne trouve pas. Je suis obligé à chaque fois de tout supprimer et de tout uploader pour faire les tests...

 

Une idée à cette erreur sadique qui a du faire transpirer pas mal de newbies en upgrade??

Link to comment
Share on other sites

Salut,

J'ajouterais à la réponse de Johan:

 

1- fais cela sur une version préprod,(donc tu clones ton site)

2- suis la doc officiel de Prestashop http://doc.prestashop.com/pages/viewpage.action?pageId=11272350

 

Hello Alex...

 

C'est exactement ce que je fais, je suis en local.

Je tourne en rond.

 

Je teste immédiatement la doc officielle, et je vous tiens au jus.

(Au passage, j'ai appelé PS pour avoir l'info d'une doc ou d'un tuto, et je me suis fait jeté, sans même y mettre les formes... Je sais que c'est de OpenSources, mais bon...)

 

A tout à l'heure

Link to comment
Share on other sites

Pour info, je viens de suivre la version officielle et j'ai l'erreur suivante : settings.inc.php is missing (error code 30)

 

Je pense, si ma logique est bonne, que ce fichier est manquant car je lance l'upgrade d'un PS qui n'a pas été installé...

(je ne sais pas si je me fais correctement comprendre, désolé pour mon vocabulaire de newbie)

 

 

C'est curieux que tu ais ces problèmes. Tu utilises quoi comme serveur local ? Wamp ? Wamp ? EasyPHP ?

 

Pour te répondre, jutilise WampServer 2.2 qui inclue phpMyAdmin 4.1.14

 

Et oui, c’est étonnant d'avoir cette erreur Ajax, alors que j'ai pu voir que cela fonctionnait pour beaucoup de gens.

Pour compléter le diag, j'ajouterai que j'ai essayé avec différentes versions à upgrader 1.2.5.0 et 1.3.7.0 vers la 1.4.5.1 du tuto.

 

Merci pour votre aide encore une fois.

Link to comment
Share on other sites

c'est un cauchemard une mise a jour manuelle mais c'est possible... tu as une erreur java-script dans la console debug chromeou firefox?

 

Oui un vrai cauchemar, j'ai vraiment pas envie de devoir retaper chaque entrée de ma table customers (elle est longue comme une jambe!)

 

Je suis avec Firefox, tu penses que je devrais essayer avec Chrome ou IE?

Link to comment
Share on other sites

Alors les gars, accrochez vous, j'ai trouvé LA SEULE et UNIQUE solution quand comme pour moi, ca bug à l'upgrade manuel...

 

Évidemment il faut tout tester EN LOCAL avant quoi que ce soit...!

 

Le passage de la version 1.1 vers 1.6 est faisable directement aprtès de longues heures de boulot, mais faisable sans problème.

Cette méthode est donc valable uniquement pour une table de la BDD, autrement dit, si toutes les tables sont à upgrader, il faudra se les faire une à une...l'angoisse!!!

 

phpMyAdmin, permet donc l'accès à la BDD -_-  comme on sait.

 

- On procède à l'export de la table à upgrade de la base de données (ici la table ps_customers version 1.1)

Attention, c'est là que tout se joue : EXPORT en CSV for MS Excel ou EXPORT en CSV.

Dans les 2 cas il va falloir retoucher.

- On procède à l'export de la table à la version actuelle (ici la table ps_customers version 1.6)

On utilisera le format CSV for MS Excel pour avoir une jolie page avec des colonnes...déjà bien organisées ;)  .

 

On utilise les données du 1er export et on se calque sur le modèle de colonnes du 2e export.

Autrement dit, on fait tout rentrer dans les bonnes cases

(mais là aussi, attention il faut faire gaffe, PAS D'ACCENTS sinon ils seront remplacés par des " ? ")

 

Une fois tout propre, on sauvegarde en CSV (séparateur: point-virgule / ou autre type, mais c'est très important de savoir ce qui est utilisé)

- Retour à phpMyAdmin, on se positionne sur la BDD visée, on sélectionne la table à upgrade.

- Et hop...IMPORT de CSV et surtout sélectionner le séparateur utilisé à l'enregistrement.

 

Miracle de la technologie!! Tout est là!!

- Une fois que tout a été uploadé en local, on fait un export de la table (qui devrait être la même version de notre site - web)

- Connexion à la base du site en ligne, on clique sur la BDD, sur la table modifiée, on upload le tout et hop!

Et la connexion devient possible... :P

 

Merci à ceux qui m'ont aidé :wub: , et à mon cerveau B) qui a finalement bien travaillé!

Edited by karnaf (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...