Jump to content

Migration de PS1.7.8.8 vers PS 8.0.2 : problème sur ObjectModel.php


Recommended Posts

Bonjour à tous.

Après avoir bien fait gaffe à ce que les modules soient à jour, idem pour le template certifié compatible PS8, je me suis lancé dans la migration (sur la préprod, heureusement...).

Après une mise à jour heureuse, un vidage du cache, j'ai obtenu une erreur 500

Après avoir activé le débug, je tombe sur une erreur fatale multiple, le texte ci après

Fatal error: Uncaught PrestaShopException: La propriété CustomerSession->date_add n'est pas valide. in /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/ObjectModel.php:1085 Stack trace: #0 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/ObjectModel.php(312): ObjectModelCore->validateFields() #1 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/ObjectModel.php(793): ObjectModelCore->getFields() #2 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/ObjectModel.php(566): ObjectModelCore->update(false) #3 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Cookie.php(574): ObjectModelCore->save() #4 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Cookie.php(542): CookieCore->getSession('5821') #5 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Customer.php(1289): CookieCore->isSessionAlive() #6 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Hook.php(1070): CustomerCore->isLogged() #7 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Hook.php(689): HookCore::getAllHookRegistrations(Object(Context), 'moduleRoutes') #8 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Hook.php(793): HookCore::getHookModuleExecList('moduleRoutes') #9 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Dispatcher.php(586): HookCore::exec('moduleRoutes', Array, NULL, true, false) #10 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Dispatcher.php(243): DispatcherCore->loadRoutes() #11 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/Dispatcher.php(201): DispatcherCore->__construct(Object(Symfony\Component\HttpFoundation\Request)) #12 /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/index.php(28): DispatcherCore::getInstance() #13 {main} thrown in /home/clients/f2e8e962d55171566d9f94fe442f79af/web/test/classes/ObjectModel.php on line 1085

Je n'ai aucune idée de l'origine du souci...

Je suis passé sous PHP 8.1 dès migration terminée.

En désespoir de cause, je m'en remets aux experts de ce forum...

Merci!

Link to comment
Share on other sites

Bonjour,

Vous avez probablement des colonnes manquantes dans votre base de données, en l’occurrence, la colonne « date_add ».

Le problème est par conséquent simple, dès qu’un appel est fait en écriture ou en lecture pour ce champ en base de données, un problème survient. 

Dans votre cas présent, Prestashop essaye d’écrire la date de modification et n’y parvient pas.

exemple d’une colonne à ajouter dans une table `date_add` datetime NOT NULL 

Reportez-vous sur ce lien qui précise quelles doivent être les colonnes présentes dans les tables https://github.com/PrestaShop/PrestaShop/blob/8.1.x/install-dev/data/db_structure.sql#L34

Dès lors que vous identifierez la colonne date_add manquant dans une table, alors il faudra l’ajouter à votre table. Si l’on prend la table prefix_address, il faudra rajouter la colonne date_add comme indiqué dans le lien sus-cité.

Une fois avoir résolu le problème avec la colonne date_add, vous aurez peut être d’autres erreurs similaires avec des colonnes manquantes. Suivez la même méthode. 
 

Avec cette méthode, de vérification des colonnes dans votre base de données Prestashop lors d’une migration, vous avez résolu déjà au moins plus de 50% des problèmes courants. 
 

Une raison particulière pourquoi les colonnes n’ont pas été créées via l’usage de one click upgrade ? Ce serait bien trop long à détailler. Alors conservez cette méthode en tête et vous verrez, cela ira de mieux en mieux à l’avenir.

PS : dans votre, cas regardez du côté customer ou employee_session.

J’espère que la piste proposée sera la bonne.

Merci

 

 

 

 

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

Oui, mince. Ça fait beaucoup.

Je vous propose d’étudier ce PR Ensemble https://github.com/PrestaShop/PrestaShop/pull/21120

Il semblerait que ce soit ici qu’est appelé la partie customer session.Plus que 2 tables à vérifier au lieu de 52 !

Rendez-vous à la fin de ce ticket et vérifiez ou créez la table customer_session et vérifiez aussi la table ps_employee_session:

when the employee session is deleted, the employee is disconnected

the button Clear outdated sessions works fine ( tested with the request "INSERT INTO ps_employee_session(id_employee_session, id_employee, token, date_add, date_upd) VALUES (NULL, '1', '93716dfd1daea28de7e6fc1f813264af3609d10d', '2019-08-11 14:27:51', '2019-08-11 14:27:51');" in the database )

Customer Sessions (case of visitor, guest, customer): Bulk delete, Pagination, Sort, Search, Delete, Refresh list, Show SQL Query, Export to SQL Manager : OK

when the customer session is deleted, the customer is disconnected,

the button Clear outdated sessions works fine( tested with the request "INSERT INTO ps_Customer_session(id_Customer_session, id_Customer, token, date_add, date_upd) VALUES (NULL, '1', '93716dfd1daea28de7e6fc1f813264af3609d10d', '2019-08-11 14:27:51', '2019-08-11 14:27:51');" in the database ).

C’est bien dans ce fichier que tout se joue https://github.com/PrestaShop/PrestaShop/pull/21120/files/d4a5cecba5fb380b30d00d1b92f53bd0ce50070f#diff-287f4fcae377e3c781b0242ecc44b8d03740864a0ab661f85ed76bfd760468aa

Allez, j’espère que je vous ai indiqué la bonne voie 😀.

Dites nous ce que cela donne !

Merci

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

Bon... J'ai parsé toutes les tables.

Sur les 2 dernières, les tables date_add et date_upd sont inversés par rapport à la structure théorique. C'est tout ce que j'ai trouvé, le champ date_add est dans toutes les tables.

Est-ce que ça peut justifier le souci?

Link to comment
Share on other sites

21 hours ago, prestaotop said:

Non.

Pourriez-vous extraire une ligne de la table (anonymisée) customer_session. Le Champ date est-il au bon format ?

Quel est le charset de la table ?

Hello. Hier soir j'ai eu les yeux qui tombaient, je ne réponds que maintenant. Voici 3 copies d'écran. A croire qu'il y a un souci dans la migration de la table vers PS8, non? Même pas besoin d'anonymiser

data1.jpg

data2.jpg

data3.jpg

Link to comment
Share on other sites

21 hours ago, Mediacom87 said:

Bonjour,

vous avez fait une migration vers la 8.0.2 alors que la 8.0.3 est disponible depuis plusieurs jours, peut-être qu'un nouvel essaie sur cette version corrigerait le problème rencontré.

 

Quand mon met à jour avec le one-clic button oui, quand on va sur prestashop.com c'est la version 8.0.2 qui est proposée. Et j'ai finalement le même souci dans l'un comme dans l'autre.

Edited by gringo1er
oubli d'une précision (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...