Jump to content

[Résolu] Bug - Suite MAJ 1.4.11 vers 1.5.5, impossible d'enregistrer les produits


Recommended Posts

Bonjour à tous, 

 

D'abord un grand Merci à l'équipe prestashop pour son formidable travail et aux membres actifs du forum qui aident les autodidactes comme nous à résoudre leurs petits et gros tracas Prestashopiens !

 

Notre boutique est en production suite à MAJ de 1.4.11 vers 1.5.5. avec 1-click-upgrade. Actuellement en mode maintenance, car nous souhaitions corriger les "petits bugs" liés aux réductions par quantité sur certains produits avant de ré-ouvrir la boutique. 

 

Il est malheureusement impossible d'enregistrer quelque modification que ce soit sur les fiches produit, le message suivant apparaît : 

 

Une erreur s'est produite pendant la mise à jour de l'objet. product ()

 

Après recherches sur le web, nous avons essayé les solutions les plus proposées et cohérentes : 

Sur le forum anglais ils conseillent d'aller sous MYSQL:

Yes, use MyPHPAdmin, go to your database, choose SQL tab and paste this:

alter table ps_product add column redirect_type int (10) ;
alter table ps_product_shop add column redirect_type int (10) ;
then click GO button on the bottom right.
Sur le forum français, openpresta conseille, également sous MySQL : 

ALTER TABLE  `ps_product` ADD  `id_product_redirected` INT NOT NULL
ALTER TABLE  `ps_product_shop` ADD  `id_product_redirected` INT NOT NULL

Ces deux manipulations n'ont apportées aucune solution sur cette version (cache vidé entre chaque phase de test).

 

Nous joignons des impressions écran de PHPmyadmin pour que vous puissiez voir la configuration actuelle des tables ps_product et ps_product_shop

 

En espérant qu'une âme charitable puisse rapidement nous venir en aide ;-)

 

Merci de votre attention et bonne journée !

post-301554-0-94177200-1378295581_thumb.jpg

post-301554-0-28796200-1378295651_thumb.jpg

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

Bonsoir, 

 

Merci de votre réponse. Le mode DEV est activé. Si J'essaye d'enregistrer un produit déjà existant, j'obtiens : 

Unknown column 'id_color_default' in 'field list'

UPDATE `ps_product` SET `id_product` = '14',`id_tax_rules_group` = '1',`id_manufacturer` = '1',`id_supplier` = '0',`id_category_default` = '274',`id_color_default` = '0',`quantity` = '8991',`minimal_quantity` = '1',`price` = '4.7',`additional_shipping_cost` = '0',`wholesale_price` = '3.56',`on_sale` = '0',`online_only` = '0',`ecotax` = '0',`unity` = '',`unit_price_ratio` = '0',`ean13` = '3495886140105',`upc` = '',`reference` = 'Poudre à tracer AMPERE',`supplier_reference` = '630614010',`location` = 'MAGASIN',`width` = '0',`height` = '0',`depth` = '0',`weight` = '1.05',`out_of_stock` = '2',`quantity_discount` = '0',`customizable` = '0',`uploadable_files` = '0',`text_fields` = '0',`active` = '1',`available_for_order` = '1',`condition` = 'new',`show_price` = '1',`indexed` = '0',`cache_is_pack` = '0',`cache_has_attachments` = '0',`cache_default_attribute` = '67',`date_add` = '2012-01-31 20:51:58',`date_upd` = '2013-09-06 00:26:01',`proddanger` = '1' WHERE `id_product` = 14
Link to comment
Share on other sites

En activant le mode DEV, j'ai également un message d'alerte en FO mais qui n'a rien à voir.

Il concerne le module pm_advancedtopmenu qui fonctionne bien malgré tout : 

Warning: Function addCSS() is deprecated in /homez.91/approbtp/www/modules/pm_advancedtopmenu/pm_advancedtopmenu.php on line 2804
in /homez.91/approbtp/www/classes/Tools.php on line 1953

Warning: Function addCSS() is deprecated in /homez.91/approbtp/www/modules/pm_advancedtopmenu/pm_advancedtopmenu.php on line 2805
in /homez.91/approbtp/www/classes/Tools.php on line 1953

Warning: Function addCSS() is deprecated in /homez.91/approbtp/www/modules/pm_advancedtopmenu/pm_advancedtopmenu.php on line 2806
in /homez.91/approbtp/www/classes/Tools.php on line 1953

Warning: Function addCSS() is deprecated in /homez.91/approbtp/www/modules/pm_advancedtopmenu/pm_advancedtopmenu.php on line 2807
in /homez.91/approbtp/www/classes/Tools.php on line 1953

Warning: Function addJS() is deprecated in /homez.91/approbtp/www/modules/pm_advancedtopmenu/pm_advancedtopmenu.php on line 2808
in /homez.91/approbtp/www/classes/Tools.php on line 1953

Warning: Function isLogged() is deprecated in /homez.91/approbtp/www/modules/pm_advancedtopmenu/pm_advancedtopmenu.php on line 2841
in /homez.91/approbtp/www/classes/Tools.php on line 1953


Voici les lignes concernées par ces messages dans pm_advancedtopmenu.php : 

global $smarty;
		if (_PS_VERSION_ >= 1.4) {
			Tools::addCSS(__PS_BASE_URI__ . 'modules/' . $this->name . '/css/pm_advancedtopmenu_base.css', 'all');
			Tools::addCSS(__PS_BASE_URI__ . 'modules/' . $this->name . '/css/pm_advancedtopmenu_global.css', 'all');
			Tools::addCSS(__PS_BASE_URI__ . 'modules/' . $this->name . '/css/pm_advancedtopmenu_advanced.css', 'all');
			Tools::addCSS(__PS_BASE_URI__ . 'modules/' . $this->name . '/css/pm_advancedtopmenu.css', 'all');
			Tools::addJS(__PS_BASE_URI__ . 'modules/' . $this->name . '/js/pm_advancedtopmenu.js');
		}

Et la ligne 1953 de tools.php : 

protected static function throwDeprecated($error, $message, $class)
	{
		if (_PS_DISPLAY_COMPATIBILITY_WARNING_)
		{
			trigger_error($error, E_USER_WARNING);
			Logger::addLog($message, 3, $class);
		}
	}

Il ne doit pas y avoir grand chose à faire pour résoudre ces deux problèmes mais je bloque. A l'écoute de vos propositions !

Link to comment
Share on other sites

Bonne question ! Peut-être un héritage de la version 1.4.11 ? Quoiqu'il en soit j'avais compris la même chose que vous, cette colonne pose problème. J'imagine que je vais devoir la faire sauter.

 

Connaissez-vous la fonction mysql pour supprimer cette colonne depuis phpmyadmin ?

Link to comment
Share on other sites

 Peut-être un héritage de la version 1.4.11

C'est possible effectivement. Regardes ici à tester

Connaissez-vous la fonction mysql pour supprimer cette colonne depuis phpmyadmin ?

Je ne m'aventurerai pas à donner une requête pour ceci, je ne suis pas assez sûr de moi dans le cas présent. ;)

 

Edit :

 

J'imagine que je vais devoir la faire sauter.

Avant de la faire sauter : id_color_default est-elle présente dans la table ps_product ?

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

Visiblement non...

Colonnes PS_PRODUCT actuelles :

id_product
id_supplier
id_manufacturer
id_category_default
id_shop_default
on_sale
online_only
ean13
upc
ecotax
quantity
minimal_quantity
price
wholesale_price
unity
unit_price_ratio
additional_shipping_cost
reference
supplier_reference
location
width
height
depth
weight
out_of_stock
quantity_discount
customizable
uploadable_files
text_fields
active
redirect_type
id_product_redirected
available_for_order
available_date
condition
show_price
indexed
visibility
cache_is_pack
cache_has_attachments
is_virtual
cache_default_attribute
date_add
date_upd
proddanger
advanced_stock_management
id_tax_rules_group 
Edited by BubbleWorld (see edit history)
Link to comment
Share on other sites

J'ai trouvé un lien sur le web qui affiche la sauvegarde d'une BDD Prestashop (voir ici - d'ailleurs je trouve bizarre de trouver si facilement la sauvegarde de la base de données d'une boutique prestashop... ça me paraît étrange que l'on puisse avoir accès via google à ce genre d'informations confidentielles, non ?)

 

Sur cette page, j'ai trouvé ceci : 

CREATE TABLE `ps_product` (
`id_product` int(10) unsigned NOT NULL auto_increment,
`id_supplier` int(10) unsigned default NULL,
`id_manufacturer` int(10) unsigned default NULL,
`id_tax` int(10) unsigned NOT NULL,
`id_category_default` int(10) unsigned default NULL,
`id_color_default` int(10) unsigned default NULL,
`on_sale` tinyint(1) unsigned NOT NULL default '0',
`ean13` varchar(13) default NULL,
`ecotax` decimal(17,2) NOT NULL default '0.00',
`quantity` int(10) unsigned NOT NULL default '0',
`price` decimal(20,6) NOT NULL default '0.000000',
`wholesale_price` decimal(20,6) NOT NULL default '0.000000',
`reduction_price` decimal(17,2) default NULL,
`reduction_percent` float default NULL,
`reduction_from` datetime NOT NULL default '1970-01-01 00:00:00',
`reduction_to` datetime NOT NULL default '1970-01-01 00:00:00',
`reference` varchar(32) default NULL,
`supplier_reference` varchar(32) default NULL,
`location` varchar(64) default NULL,
`weight` float NOT NULL default '0',
`out_of_stock` int(10) unsigned NOT NULL default '2',
`quantity_discount` tinyint(1) default '0',
`customizable` tinyint(2) NOT NULL default '0',
`uploadable_files` tinyint(4) NOT NULL default '0',
`text_fields` tinyint(4) NOT NULL default '0',
`active` tinyint(1) unsigned NOT NULL default '0',
`indexed` tinyint(1) NOT NULL default '0',
`date_add` datetime NOT NULL,
`date_upd` datetime NOT NULL,
PRIMARY KEY (`id_product`),
KEY `product_supplier` (`id_supplier`),
KEY `product_manufacturer` (`id_manufacturer`),
KEY `id_tax` (`id_tax`),
KEY `id_category_default` (`id_category_default`),
KEY `id_color_default` (`id_color_default`),
KEY `date_add` (`date_add`)
) ENGINE=MyISAM AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;/* Scheme for table ps_product */

Vissiblement, la table aurait dû être créée mais ne l'a pas été... 

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

Vu que la colonne est manquante dans ma BDD, il va certainement falloir l'ajouter... ;-)

Oui, (voir Post 8) mais j'ai bien peur que ce ne soit pas suffisant...

 

Les produits de la table ps_product contiennent-ils la colonne id_color_default ?

 

Pour créer la colonne manquante

ALTER TABLE `ps_product` ADD `id_color_default` INT( 10 ) UNSIGNED NULL
  • Like 1
Link to comment
Share on other sites

Non, la colonne id_color_default n'est pas présente dans la strucure de la table PS_PRODUCT (voir Post 9)

 

Les produits (pas la structure de la table) contenus dans la table ps_product contiennent-ils la colonne id_color_default ?

 

• Avez vous essayé ceci ?

Pour créer la colonne manquante

ALTER TABLE `ps_product` ADD `id_color_default` INT( 10 ) UNSIGNED NULL
Edited by indesign (see edit history)
Link to comment
Share on other sites

Pardon, mais je ne comprend pas votre question : Si la table PS_PRODUCT ne contient pas la colonne id_color_default, comment les produits de cette même table pourraient-ils contenir cette colonne ? Désolé si je fais un amalgame, mais j'aimerai comprendre.

 

Après vérification sur phpmyadmin, ni la structure ni les produits de la table PS_PRODUCT n'ont la colonne "id_color_default."

 

Non, je n'ai pas encore essayé de créer la colonne manquante.

J'aimerai être sûr que le problème est bien identifié et que cette solution est la bonne avant d'intervenir dans la BDD. 

 

2 possibilités :

- soit le bug est dans la BDD (ce que l'on envisage depuis le début du post),

- soit le bug est dans le code de PS (au niveau de l'enregistrement des produits ?)

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

Matthieu Biart
 

 

This "id_default_color" is the ID of the default color "attribute group" used by the Front Office color picker feature.
It is not used by any other native feature.

This ID is not refering to a specific color but to a specific color group.

 

• PS 1.5 la table a visiblement changée. id_default_color devenu color dans la table ps_attribut

• Comparer avec une vieille version de PS 1.4

  • Like 1
Link to comment
Share on other sites

Merci beaucoup Indesign, votre intérêt et vos réflexions me permettent d'avancer. Quelques pistes sur le forum anglais semblent indiquer que le fait de créer la table suffirait à résoudre le problème... comme vous l'avez suggéré. 

 

Je vais me lancer... je vous tiens au courant.

Link to comment
Share on other sites

 

Pour créer la colonne manquante

ALTER TABLE `ps_product` ADD `id_color_default` INT( 10 ) UNSIGNED NULL

 

Vous aviez raison Indesign, j'ai ajouter la colonne via phpmyadmin et il semble que je peux de nouveau enregistrer mes produits ! 

 

UN GRAND MERCI POUR VOTRE AIDE !

 

J'espère que ce post pourra aider d'autres personnes à résoudre ce petit bug ;-)

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

Bonjour à tous,

J'ai installé la version1.5 de prestashop sur une machine A en utilisant Xampp, et je l'ai customizer, en ajoutant mes propres categories, produits et autres...tout fonctionne bien sur A. 

Ensuite il est devenu necessaire de deplacer le projet sur une machine B. J'ai dc creer un backup de la BD, et j'ai transporter le dossier du site /monsiteshop  de A vers B.

 

Seulement, Voici mon probleme:

 

Lorque je me connectre comme admin, certain enregistrement s ne fonctionnent pas, notamment:

- les produits

- les categories

- la modification des parametres SEO & URLs, pour eviter une redirection vers le localhost de la machine A, vu que à présent c'est sur la machine B que je travaille...

 

Le navigateur me renvoie un message d'erreur indicant une erreur de configuration ou de serveur.

Et lorqeu j'active à "true" l'affichichage de erruers en mode DEV, j'obtiens:

 

Fatal error: Maximum execution time of 60 seconds exceeded in D:\Mes Sites Web\xampp\htdocs\igtshop\tools\smarty\sysplugins\smarty_internal_cacheresource_file.php on line 180

 

 

Merci d'avance pour toute aide utile!

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