Polskie wsparcie PrestaShop

PrestaShop => PrestaShop 1.6 => Wątek zaczęty przez: felis w Luty 20, 2018, 10:26:38 pm

Tytuł: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: felis w Luty 20, 2018, 10:26:38 pm
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.
Tytuł: Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: west w 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
Tytuł: Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: felis w 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
Tytuł: Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: west w 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]
Tytuł: Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: felis w 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.
Tytuł: Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: felis w 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.
Tytuł: Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: felis w 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.
Tytuł: Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: felis w 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.
Tytuł: Odp: Błąd presty przy próbie usuwania reklam z konfiguracji szablonu.
Wiadomość wysłana przez: felis w 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.