wdrożenia PrestaShop

Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.

  • 8 Odpowiedzi
  • 3006 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline felis

  • Użytkownik
  • **
  • 45
  • 0
  • PrestaShop: PS
  • Status: forum
Witam
Mam świeżą instalacje presty 1.6.1.18. Nagle przestało działać usuwanie obrazów reklam z konfiguracji szablonu.
Wchodzę w preferencje - szablony (default-bootstrap) - konfigurator szablonu. Wybieram jakiś obraz z Podepnij do "home" i potem "usuń element" i dostaje komunikat:
Cytuj
[PrestaShop] Fatal error in module file :/home/trustinadm/public_html/shop/classes/db/DbPDO.php:
Uncaught Error: Call to a member function rowCount() on boolean in /home/trustinadm/public_html/shop/classes/db/DbPDO.php:208 Stack trace: #0 /home/trustinadm/public_html/shop/modules/themeconfigurator/themeconfigurator.php(399): DbPDOCore->Affected_Rows() #1 /home/trustinadm/public_html/shop/modules/themeconfigurator/themeconfigurator.php(532): ThemeConfigurator->removeItem() #2 /home/trustinadm/public_html/shop/controllers/admin/AdminModulesController.php(868): ThemeConfigurator->getContent() #3 /home/trustinadm/public_html/shop/controllers/admin/AdminModulesController.php(1117): AdminModulesControllerCore->postProcessCallback() #4 /home/trustinadm/public_html/shop/classes/controller/Controller.php(178): AdminModulesControllerCore->postProcess() #5 /home/trustinadm/public_html/shop/classes/Dispatcher.php(367): ControllerCore->run() #6 /home/trustinadm/public_html/shop/mfbja4ke9vneloa1/index.php(58): DispatcherCore->dispatch() #7 {main} thrown
Wcześniej to działało bez problemu. Mogę dodać nowy element, działa, mogę edytować, wyłączyć działa, a jak usuwam ten sam błąd.
W preście nie było nic zmieniane, ale ruszane były ustawienia DNS dla domeny, bo źle działała poczta.

Ma ktoś jakiś pomysł jak to naprawić, bo boję się by błąd nie pojawił się w jakimś innym ważnym miejscu.

*

Offline west

  • Administrator
  • Mieszkaniec
  • *****
  • 5,292
  • 106
  • Płeć: Mężczyzna
  • Europasaz.pl
    • PrestaShop, Wordpress, SMF, Woocomerce
  • PrestaShop: 8.0
  • Status: Programista
Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
« Odpowiedź #1 dnia: Luty 21, 2018, 10:42:40 am »
wygląda to na błąd tabeli. Jeśli możesz odinstaluj całkowicie ten moduł i zainstaluj ponownie. Upewnij się, że tabele zostały usunięte z bazy danych
MODUŁY | https://europasaz.pl |  SKLEPY INTERNETOWE | WSPARCIE TECHNICZNE | HOSTING | https://europasaz.pl 

*

Offline felis

  • Użytkownik
  • **
  • 45
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
« Odpowiedź #2 dnia: Luty 21, 2018, 10:58:26 am »
Spróbuje, ale myślę, że to problem po stronie serwera. Wszystko działało. Nagle przestało. Usunąłem całą prestę bo to jeszcze projekt włącznie z tabelami. Zainstalowałem ponownie prestę i problem nie zniknął. Dlatego sądzę, że coś się popsuło na serwerze.

Zrobiłem wyczyść moduł, usuń moduł, zainstaluj ponownie moduł. Nie ma poprawy. Nie wiem jak sprawdzić czy  przy tych czynnościach tabele zostały sunięte z bazy danych.
Jeszcze dodam, że robiłem to z modułem konfigurator szablonu.
Nie wiem co to jest przywołany na początku DbPDO.php
« Ostatnia zmiana: Luty 21, 2018, 11:30:58 am wysłana przez felis »

*

Offline west

  • Administrator
  • Mieszkaniec
  • *****
  • 5,292
  • 106
  • Płeć: Mężczyzna
  • Europasaz.pl
    • PrestaShop, Wordpress, SMF, Woocomerce
  • PrestaShop: 8.0
  • Status: Programista
Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
« Odpowiedź #3 dnia: Luty 21, 2018, 12:24:20 pm »
Zobacz w katalogu classes oraz włącz tryb debugowania wtedy ładnie Ci powie co jest nie tak [FAQ tego forum]
MODUŁY | https://europasaz.pl |  SKLEPY INTERNETOWE | WSPARCIE TECHNICZNE | HOSTING | https://europasaz.pl 

*

Offline felis

  • Użytkownik
  • **
  • 45
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
« Odpowiedź #4 dnia: Luty 21, 2018, 12:37:07 pm »
Mam taki komunikat z trybu debugowania
[PrestaShopDatabaseException]

Table 'i4413557_ps1.ps_ps_themeconfigurator' doesn't exist

DELETE FROM `ps_ps_themeconfigurator` WHERE id_item = 1


at line 791 in file classes/db/Db.php

786.         if ($webservice_call && $errno) {
787.             $dbg = debug_backtrace();
788.             WebserviceRequest::getInstance()->setError(500, '[SQL Error] '.$this->getMsgError().'. From '.(isset($dbg[3]['class']) ? $dbg[3]['class'] : '').'->'.$dbg[3]['function'].'() Query was : '.$sql, 97);
789.         } elseif (_PS_DEBUG_SQL_ && $errno && !defined('PS_INSTALLATION_IN_PROGRESS')) {
790.             if ($sql) {
791.                 throw new PrestaShopDatabaseException($this->getMsgError().'<br /><br /><pre>'.$sql.'</pre>');
792.             }
793.
794.             throw new PrestaShopDatabaseException($this->getMsgError());
795.         }
796.     }

    DbCore->displayError - [line 425 - classes/db/Db.php] - [1 Arguments]
    DbCore->query - [line 580 - classes/db/Db.php] - [1 Arguments]
    DbCore->delete - [line 397 - modules/themeconfigurator/themeconfigurator.php] - [2 Arguments]
    ThemeConfigurator->removeItem - [line 532 - modules/themeconfigurator/themeconfigurator.php]
    ThemeConfigurator->getContent - [line 868 - controllers/admin/AdminModulesController.php]
    AdminModulesControllerCore->postProcessCallback - [line 1117 - controllers/admin/AdminModulesController.php]
    AdminModulesControllerCore->postProcess - [line 178 - classes/controller/Controller.php]
    ControllerCore->run - [line 367 - classes/Dispatcher.php]
    DispatcherCore->dispatch - [line 58 - admin/index.php]
Aha zauważyłem, że można rozwinąć dolne komunikaty. W razie potrzeby zamieszczę cały kod.

*

Offline felis

  • Użytkownik
  • **
  • 45
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
« Odpowiedź #5 dnia: Luty 21, 2018, 12:47:16 pm »
Zamieszczam pozostałe wpisy:
    DbCore->displayError - [line 425 - classes/db/Db.php] - [1 Arguments]

    420.                 $this->result = $this->_query($sql);
    421.             }
    422.         }
    423.
    424.         if (_PS_DEBUG_SQL_) {
    425.             $this->displayError($sql);
    426.         }
    427.
    428.         return $this->result;
    429.     }
    430.

    DbCore->query - [line 580 - classes/db/Db.php] - [1 Arguments]

    575.             $table = _DB_PREFIX_.$table;
    576.         }
    577.
    578.         $this->result = false;
    579.         $sql = 'DELETE FROM `'.bqSQL($table).'`'.($where ? ' WHERE '.$where : '').($limit ? ' LIMIT '.(int)$limit : '');
    580.         $res = $this->query($sql);
    581.         if ($use_cache && $this->is_cache_enabled) {
    582.             Cache::getInstance()->deleteQuery($sql);
    583.         }
    584.
    585.         return (bool)$res;

    DbCore->delete - [line 397 - modules/themeconfigurator/themeconfigurator.php] - [2 Arguments]

    392. $id_item = (int)Tools::getValue('item_id');
    393.
    394. if ($image = Db::getInstance()->getValue('SELECT image FROM `'._DB_PREFIX_.'themeconfigurator` WHERE id_item = '.(int)$id_item))
    395. $this->deleteImage($image);
    396.
    397. Db::getInstance()->delete(_DB_PREFIX_.'themeconfigurator', 'id_item = '.(int)$id_item);
    398.
    399. if (Db::getInstance()->Affected_Rows() == 1)
    400. {
    401. Db::getInstance()->execute('
    402. UPDATE `'._DB_PREFIX_.'themeconfigurator`

    ThemeConfigurator->removeItem - [line 532 - modules/themeconfigurator/themeconfigurator.php]

    527. if (Tools::isSubmit('newItem'))
    528. $this->addItem();
    529. elseif (Tools::isSubmit('updateItem'))
    530. $this->updateItem();
    531. elseif (Tools::isSubmit('removeItem'))
    532. $this->removeItem();
    533.
    534. $html = $this->renderConfigurationForm();
    535. $html .= $this->renderThemeConfiguratorForm();
    536.
    537. return $html;

    ThemeConfigurator->getContent - [line 868 - controllers/admin/AdminModulesController.php]

    863.
    864.                             if (count($this->errors)) {
    865.                                 continue;
    866.                             }
    867.                             // Get the return value of current method
   868.                             $echo = $module->{$method}();
    869.
    870.                             // After a successful install of a single module that has a configuration method, to the configuration page
    871.                             if ($key == 'install' && $echo === true && strpos(Tools::getValue('install'), '|') === false && method_exists($module, 'getContent')) {
    872.                                 Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token.'&configure='.$module->name.'&conf=12');
    873.                             }

    AdminModulesControllerCore->postProcessCallback - [line 1117 - controllers/admin/AdminModulesController.php]

    1112.             }
    1113.         }
    1114.
    1115.         // Call appropriate module callback
    1116.         if (!isset($ppm_return)) {
    1117.             $this->postProcessCallback();
    1118.         }
    1119.
    1120.         if ($back = Tools::getValue('back')) {
    1121.             Tools::redirectAdmin($back);
    1122.         }

    AdminModulesControllerCore->postProcess - [line 178 - classes/controller/Controller.php]

    173.             if (!$this->content_only && ($this->display_header || (isset($this->className) && $this->className))) {
    174.                 $this->setMedia();
    175.             }
    176.
    177.             // postProcess handles ajaxProcess
    178.             $this->postProcess();
    179.
    180.             if (!empty($this->redirect_after)) {
    181.                 $this->redirect();
    182.             }
    183.

    ControllerCore->run - [line 367 - classes/Dispatcher.php]

    362.             if (isset($params_hook_action_dispatcher)) {
    363.                 Hook::exec('actionDispatcher', $params_hook_action_dispatcher);
    364.             }
    365.
    366.             // Running controller
    367.             $controller->run();
    368.         } catch (PrestaShopException $e) {
    369.             $e->displayMessage();
    370.         }
    371.     }
    372.

    DispatcherCore->dispatch - [line 58 - admin/index.php]

    53. if (!isset($_REQUEST['controller']) && isset($_REQUEST['tab'])) {
    54.     $_REQUEST['controller'] = strtolower($_REQUEST['tab']);
    55. }
    56.
    57. // Prepare and trigger admin dispatcher
    58. Dispatcher::getInstance()->dispatch();

I da się coś wywnioskować z tych wpisów? Bo dla mnie nie są jasne.

*

Offline felis

  • Użytkownik
  • **
  • 45
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
« Odpowiedź #6 dnia: Luty 21, 2018, 01:29:19 pm »
Dodam jeszcze, że na tym samym serwerze zainstalowałem sklep w wersji o jeden niższej czyli 1.6.1.17 i tam działa bez problemu. Czyżby jakiś błąd wersji 1.6.1.18? Podobny problem zgłosił ktoś bodaj z Hiszpanii na forum www.prestashop.com/forums/
Ale póki co nikt nie znalazł rozwiązania.

*

Offline felis

  • Użytkownik
  • **
  • 45
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
« Odpowiedź #7 dnia: Luty 21, 2018, 01:51:59 pm »
Dodam jeszcze:
Na innym serwerze miałem instalację presty 1.6.1.17. Usuwanie działało. Dokonałem aktualizacji do 1.6.1.18. Przestało działać. Chyba to ewidentny błąd presty 1.6.1.18. Jeśli ktoś może sprawdzić w swojej instalacji dla potwierdzenia to poproszę. Dziwne tylko, że przez chwilę na początku działało, ale może nie zauważyłem zmiany wersji.

*

Offline felis

  • Użytkownik
  • **
  • 45
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
« Odpowiedź #8 dnia: Luty 22, 2018, 11:09:04 am »
Rozwiązanie problemu:
Edytuj plik modules/themeconfigurator/themeconfigurator.php.
Znajdź wiersz 397
Db::getInstance()->delete(_DB_PREFIX_.'themeconfigurator', 'id_item = '.(int)$id_item);wymień na:
Db::getInstance()->delete('themeconfigurator', 'id_item = '.(int)$id_item);Zapisz zmiany.