Jump to content

Erro ao acessar módulo/serviço


Recommended Posts

     Boa tarde, estou recebendo o seguinte erro quando tento acessar um módulo ou serviço no gerenciador da minha loja: 

[PrestaShop] Fatal error in module file :/home/***/public_html/classes/db/DbPDO.php:
Call to a member function rowCount() on a non-object

 

    Minha versão do prestashop é 1.6.1.2, alguém me ajuda por favor estou precisando liberar a loja e ainda não consegui resolver isso. desde já agradeço!

post-1289376-0-50774600-1472835146_thumb.png

Edited by Ronaldo.f.t (see edit history)
Link to comment
Share on other sites

Ative o modo debug, e verifique o erro que está escrevendo, ou entao leia os logs de erro do servidor. Provavelmente o seu servidor nao está configurado com os requisitos mínimos que Prestashop necessita. Para lhe dizer o que está acontecendo precisamos uma linha de erro.

 

Ativar modo debug: http://www.prestashop.com/forums/topic/282165-ativar-modo-debug/

  • Like 1
Link to comment
Share on other sites

Qual a versao php em uso e qual a versao mySQL. O problema está localizado no banco de dados. O erro vem somente com estas duas linhas ? Nao existem outras ? Alguma tabela do seu banco de dados deve estar corrupta. Peca ao seu provedor consertar tabelas quebradas no banco de dados. Ele deve saber o que fazer.

  • Like 1
Link to comment
Share on other sites

Existem muitos tools para consertar o banco de dados. Eu uso o HeidiSQL para isto. Ele identifica com uma busca especial tabelas e indexes quebrados, e tem a opcao automática para consertar as mesma.

 

Nao sei qual tool vc. está usando para acessar o banco de dados. phpMyAdmin ?

 

Veja aqui tutorial: http://php.about.com/od/mysqladministration/qt/repair_mysql.htm

  • Like 1
Link to comment
Share on other sites

     Eu acesso pelo própio gerenciador mysql do cpanel. como eu faço para realizar esse procedimento com essa ferramenta citada?

tem algum link ai de algum video ou blog? aaah sim desculpe eu vou ver o seu link.

 

  • Tipo de servidor: MySQL
  • Versão do servidor: 5.6.31 - MySQL Community Server (GPL)
  • PHP 5.4

 

     O problema pode estar relaciona a isso? o meu tema diz as seguintes informações: 

Programa Necessário

  • Adobe Photoshop CS+
  • For uncompressing a template ZIP package: WinZip 9+ (Windows); Stuffit Expander 10+ (Mac)
  • Apache Server
  • PHP v. 5 or higher
  • MySQL 4.1.14 or later
  • Sublime Text2 or later, Notepad++ or any php-editor
Edited by Ronaldo.f.t (see edit history)
Link to comment
Share on other sites

     Boa tarde, ativei o modo de debug e obtive o seguinte erro que segue abaixo:

 

 

 

[PrestaShopDatabaseException]
 
Table 'sagianco_loja.ps_smarty_lazy_cache' doesn't exist
 
 
DELETE FROM `ps_smarty_lazy_cache`
WHERE template_hash='********************' AND cache_id LIKE "blockcms%"
 
at line 791 in file classes/db/Db.php
786.         if ($webservice_call && $errno) {
787.             $dbg = debug_backtrace();
788.             WebserviceRequest::getInstance()->setError(500, '
 '.$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 601 - classes/db/Db.php] - [1 Arguments]
DbCore->execute - [line 295 - classes/SmartyCustom.php] - [2 Arguments]
SmartyCustomCore->delete_from_lazy_cache - [line 81 - classes/SmartyCustom.php] - [3 Arguments]
SmartyCustomCore->clearCache - [line 3026 - classes/Tools.php] - [3 Arguments]
ToolsCore::clearCache - [line 2428 - classes/module/Module.php] - [4 Arguments]
ModuleCore->_clearCache - [line 671 - modules/blockcms/blockcms.php] - [1 Arguments]
BlockCms->_postProcess - [line 788 - modules/blockcms/blockcms.php]
BlockCms->getContent - [line 867 - controllers/admin/AdminModulesController.php]
AdminModulesControllerCore->postProcessCallback - [line 1116 - 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]
 
     Acessando o banco de dados pude perceber que essa tabela realmente não existe. Mas existe uma chamada: ps_smarty_cache.
Edited by Ronaldo.f.t (see edit history)
Link to comment
Share on other sites

Possivelmente houve uma atualização do PrestaShop mal-sucedida.

Na atualização não pode ter erro, caso contrário certamente vão faltar outras tabelas e campos que são criados na atualização. 

 

Recomendo que restaure o backup da loja (que estava funcionando antes da atualização) e tente atualizar novamente, se possível em localhost ou em outro servidor.

  • Like 1
Link to comment
Share on other sites

     Infelizmente estou tendo que refazer tudo do zero, como eu faço para fazer backup que me permita restaurar tudo de um determinado dia que estava funcionando?

tipo eu quero fazer backups diarios para se acontecer novamente enquanto eu altero a loja eu consiga me recuperar do problema. desde já agradeço a atenção!

Link to comment
Share on other sites

Quando vc. faz um upgrade da loja com o 1-click-upgrade, este faz automaticamente um back-up. Este fica guardado nas funcoes do 1-click-upgrade. Verifique lá, vc. vai encontrar um rollback.

 

Em geral:

 

back-up do banco de dados vc. pode fazer no back-office na aba: Parametros avancados -> DB back-up.

back-up do FTP: ou entao com o cPanel, ou vc. simplesmente baixa o seu completo FTP para sua máquiona local, para poder subir este novamente.

 

Mais comodo mesmo sao back-ups feitos por cron (cPanel), ou aqueles que o provedor faz. Muitos deles fazem automaticamente e diariamente, mas isto depende tudo do seu plano web. Pergunte o seu provedor.

  • Like 1
Link to comment
Share on other sites

PS: se a tabela lazy_cache nao existe, entao basta adicioná-la ao banco de dados. Vc. pode tentar ;) MAS ANTES DE MAIS NADA faca um back-up do banco de dados !!!

 

Acrescentar lazy_cache:

 

SQL-query com o phpMyAdmin:

DROP TABLE IF EXISTS `PREFIX_smarty_lazy_cache`;
CREATE TABLE `PREFIX_smarty_lazy_cache` (
  `template_hash` varchar(32) NOT NULL DEFAULT '',
  `cache_id` varchar(255) NOT NULL DEFAULT '',
  `compile_id` varchar(32) NOT NULL DEFAULT '',
  `filepath` varchar(255) NOT NULL DEFAULT '',
  `last_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`template_hash`, `cache_id`, `compile_id`)
) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;

Neste código vc. por favor Altera o PREFIX, para o prefixo do seu banco de dados. Se nao alterou nada, quando instalou ou prefixo é ps_. e fica assim:

DROP TABLE IF EXISTS `ps_smarty_lazy_cache`;
CREATE TABLE `ps_smarty_lazy_cache` (
  `template_hash` varchar(32) NOT NULL DEFAULT '',
  `cache_id` varchar(255) NOT NULL DEFAULT '',
  `compile_id` varchar(32) NOT NULL DEFAULT '',
  `filepath` varchar(255) NOT NULL DEFAULT '',
  `last_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`template_hash`, `cache_id`, `compile_id`)
) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
  • Like 1
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...