Jump to content

Migration Ps 1.6 -> 1.7 propre


Recommended Posts

Bonjour à tous,

Voilà je me suis lancé dans la migration de PS 1.7 depuis 1.6.

Je décide de repartir sur une installe propre en conservant mes données. Pour le moment je fais une installe en local avec MAMP.

Je pars donc avec une base Ps 1.7.4.2 vide sur laquelle j'importe mes données clients, cms, produits, commandes, catégories, stock...

Tout se passe bien sauf quand, depuis le BackOffice, je vais voir mes Produits j'ai les erreurs suivante:

 

Unknown column 'state' in 'where clause'<br /><br /><pre>SELECT SQL_CALC_FOUND_ROWS p.`id_product` AS `id_product`,
p.`reference` AS `reference`,
p.`price` AS `price`,
p.`id_shop_default` AS `id_shop_default`,
p.`is_virtual` AS `is_virtual`,
pl.`name` AS `name`,
pl.`link_rewrite` AS `link_rewrite`,
sa.`active` AS `active`,
shop.`name` AS `shopname`,
image_shop.`id_image` AS `id_image`,
cl.`name` AS `name_category`,
0 AS `price_final`,
pd.`nb_downloadable` AS `nb_downloadable`,
sav.`quantity` AS `sav_quantity`,
IF(sav.`quantity`<=0, 1, 0) AS `badge_danger`
FROM `ps_product` p
LEFT JOIN `ps_product_lang` pl ON (pl.`id_product` = p.`id_product` AND pl.`id_lang` = 1 AND pl.`id_shop` = 1)
LEFT JOIN `ps_stock_available` sav ON (sav.`id_product` = p.`id_product` AND sav.`id_product_attribute` = 0 AND sav.id_shop = 1 AND sav.id_shop_group = 0 )
JOIN `ps_product_shop` sa ON (p.`id_product` = sa.`id_product` AND sa.id_shop = 1)
LEFT JOIN `ps_category_lang` cl ON (sa.`id_category_default` = cl.`id_category` AND cl.`id_lang` = 1 AND cl.id_shop = 1)
LEFT JOIN `ps_category` c ON (c.`id_category` = cl.`id_category`)
LEFT JOIN `ps_shop` shop ON (shop.id_shop = 1)
LEFT JOIN `ps_image_shop` image_shop ON (image_shop.`id_product` = p.`id_product` AND image_shop.`cover` = 1 AND image_shop.id_shop = 1)
LEFT JOIN `ps_image` i ON (i.`id_image` = image_shop.`id_image`)
LEFT JOIN `ps_product_download` pd ON (pd.`id_product` = p.`id_product`)
WHERE (1 AND state = 1)

ORDER BY `id_product` desc

LIMIT 0, 20
;</pre>

 

Je ne sais pas comment interpréter ça. Mon bagage informatique ne me permet pas de me dépatouiller sans aide. Ça me dépasse.

Si quelqu'un peut me donner une piste vers quoi chercher je suis prêt à faire l'effort de me casser la tête.

Merci d'avance

Link to comment
Share on other sites

Je récupère les tables avec les données du site :

    ps_address
    ps_customer
    ps_customer_group
    ps_customer_message
    ps_customer_thread
    ps_message
    ps_message_readed
    ps_cms
    ps_cms_block
    ps_cms_block_lang
    ps_cms_block_page
    ps_cms_block_shop
    ps_cms_category
    ps_cms_category_lang
    ps_cms_category_shop
    ps_cms_lang
    ps_cms_role
    ps_cms_role_lang
    ps_cms_shop
    ps_attribute
    ps_attribute_group
    ps_attribute_group_lang
    ps_attribute_group_shop
    ps_attribute_impact
    ps_attribute_lang
    ps_attribute_shop
    ps_category
    ps_category_group
    ps_category_lang
    ps_category_product
    ps_category_shop
    ps_product
    ps_product_attachment
    ps_product_attribute
    ps_product_attribute_combination
    ps_product_attribute_image
    ps_product_attribute_shop
    ps_product_carrier
    ps_product_country_tax
    ps_product_download
    ps_product_group_reduction_cache
    ps_product_lang
    ps_product_sale
    ps_product_shop
    ps_product_supplier
    ps_product_tag
    ps_stock
    ps_stock_available
    ps_stock_mvt
    ps_stock_mvt_reason
    ps_stock_mvt_reason_lang
    ps_cart
    ps_cart_cart_rule
    ps_cart_product
    ps_cart_rule
    ps_cart_rule_country
    ps_cart_rule_lang
    ps_orders
    ps_order_carrier
    ps_order_cart_rule
    ps_order_detail
    ps_order_detail_tax
    ps_order_history
    ps_order_invoice
    ps_order_invoice_payment
    ps_order_invoice_tax
    ps_order_payment
    ps_carrier
    ps_carrier_group
    ps_carrier_lang
    ps_carrier_shop
    ps_carrier_tax_rules_group_shop
    ps_carrier_zone
    ps_range_price
    ps_range_weight
    ps_tax
    ps_tax_lang
    ps_tax_rule
    ps_tax_rules_group
    ps_tax_rules_group_shop

Et je les remplace dans ma nouvelle base en local avec PS 1.7

Link to comment
Share on other sites

En effet les tables des produits n'ont pas tout à fait la même structure. Peut être même d'autres mais alors je dois tout vérifier.

Et comment réinjecter toute les données dans une table qui n'a pas tout à fait la même structure ? Y a t-il une manipulation qui permet d'automatiser l'injection sans tout modifier ?

Comme je le vois : j'exporte mes tables PS 1.6. Dans ce fichier sql je modifie la structure des tables pour qu'elles aient la même structure que PS 1.7 ainsi que les attributs pour que ça colle. Ce qui fait un boulot monstre si je dois faire ça sur toute les tables que je souhaite sauver.

Je viens de le faire pour ma table ps_product et j'avoue que j'ai résolu l'erreur du début de mon post. Si c'est la méthode pour faire une migration propre je vais le faire mais c'est un gros boulot...

Link to comment
Share on other sites

Il est clair que les tables des bases 1.6 et 1.7 n'ont pas les memes structures, Mediacom a raison !

Vous pouvez utiliser l'outil d'import de Presta (il existe toujours sur 1.7 ?) ainsi il se debrouillera pour ranger correctement vos données sur la base de la 1.7

Link to comment
Share on other sites

Cet outil d'import c'est celui proposé d'origine par Prestashop ?

J'ai exporté mes produits depuis PS 1.6 et fais un import sur 1.7 via l'outil d'import mais je me retrouve qu'avec une partie des données. Par exemple il manque les descriptions de mes produits. Pour l'importation des clients ça coince car il gère pas les mots de passe, le champ n'y est pas. Enfin je ne trouve pas très pratique l'outil natif d'importation des données. Je suis peut-être loin de le maîtriser aussi...

Link to comment
Share on other sites

Bonjour brikobike,

 

Oui c'est l'article qui m'a le plus inspiré pour faire la migration. Mais justement c'est à partir de cette méthode que j'ai des problèmes.

Déjà les tables qu'ils préconisent de sauvegarder puis celle à supprimer dans la base ne sont pas les mêmes. Donc j'ai dû reprendre leur liste. Et puis se pose le problème de structure des tables. On conserve les structure des tables de PS 1.6 dans du PS 1.7.

Je pensais tout simplement essayer cette méthode https://www.prestashop.com/fr/blog/mettre-a-jour-ma-boutique-prestashop-1-6-vers-1-7/

Mais il ne pose pas le problème d'importation des données. Je vais essayé ça aujourd'hui voir se que ça donne.

Link to comment
Share on other sites

Attention tout de même avant de passer a 1.7, il y a beaucoup d'option gratuites sur 1.6 qui sont devenues payantes sur 1.7, et pas mal de modules encore  incompatibles ou avec une mise a jour payante, j'en ai malheureusement fait les frais sans le savoir :(

Link to comment
Share on other sites

Oui j'ai lu les commentaires sur son article. Je retrouve les mêmes problème que j'ai eu.

Bon j'ai entrepris la mise à jour avec cette méthode https://www.prestashop.com/fr/blog/mettre-a-jour-ma-boutique-prestashop-1-6-vers-1-7

Je n'ai pas eu d'erreur jusqu'à arriver au backoffice avec l"Accès interdit" à tous les onglets et tout le contenu du BackOffice. Ça promet...

Une idée pour ce problème ? Je fais le tour du net en attendant.

 

Oui j'ai cru comprendre en faisant le tour du net que c'était pas forcément une bonne idée de passer sur PS 1.7. Mais PS 1.6 ne sera plus suivit à partir d'octobre donc on aura a pas vraiment le choix non ? Les modules dont j'ai besoin sont compatible 1.7 après j'ai un site très sobre avec peu d'option graphique...

 

Merci

Link to comment
Share on other sites

Ok j'ai résolu ce dernier problème:  j'ai dû ré-ordonner ps_access et ps_autorization_role en fonction de la structure que propose PS 1.7 de base. En gros j'ai vidé ces deux tables et j'ai ré-injecté les données proposées par la dernière version de PS.

J'ai accès à mes onglets sans erreurs pour moment sauf la page maintenance qui bug:

INFO 15:07:10 	request 	Matched route "admin_maintenance".

DEBUG 15:07:10 	security 	Read existing security token from the session.

DEBUG 15:07:10 	security 	User was reloaded from a user provider.

DEBUG 15:07:10 	doctrine 	SELECT name FROM ps_module WHERE active = 1

INFO 15:07:11 	php 	User Deprecated: Implementing "Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface" without the "reset()" method is deprecated since Symfony 3.4 and will be unsupported in 4.0 for class "Csa\Bundle\GuzzleBundle\DataCollector\GuzzleCollector".

CRITICAL 15:07:11 	php 	Uncaught Exception: Expected argument of type "object, array or empty", "string" given

CRITICAL 15:07:11 	request 	Uncaught PHP Exception Symfony\Component\Form\Exception\UnexpectedTypeException: "Expected argument of type "object, array or empty", "string" given" at /home/energybiux/www/vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/DataMapper/PropertyPathMapper.php line 41

Je bloque là pour le moment. Je ne peux pas activer mon site pour le coup.

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...