Erro ao ler a base de dados

Erro ao ler a base de dados

por Guilherme M. -
Número de respostas: 3
Colegas, bom dia.

Estou migrando uma estrutura do Moodle para um servidor local para realizar alguns testes, dentre eles a atualização da versão do Moodle. Pois bem, fiz todo o backup da estrutura (arquivos e pastas da raiz, moodledata etc.) e do banco de dados (MySQL). Repliquei tudo isto no servidor local e já importei o SQL, através do phpMyAdmin, exportado do servidor original.

Modifiquei os parâmetros do config.php para condizer com os caminhos do servidor local.

Porém... não consigo fazer o Moodle funcionar aqui. O site inicial do Moodle, aqui no servidor local, retorna um erro extremamente genérico: "Erro ao ler a base de dados". Alguém sabe o que pode ser ou sugere alguma coisa para tentar contornar este problema?

Muito obrigado!
Contagem das avaliações:  -
Em resposta à Guilherme M.

Re: Erro ao ler a base de dados

por Guilherme M. -

Debug do problema:


Debug info: Table 'ava_moodle.mdl_sessions' doesn't exist
SELECT id, sid, state, userid, lastip, timecreated, timemodified FROM fam_sessions WHERE sid = ?
[array (
0 => '0jv8n8fboi07ttseifeqjmfjg2',
)]
Error code: dmlreadexception
Stack trace:

    line 443 of \lib\dml\moodle_database.php: dml_read_exception thrown
    line 1080 of \lib\dml\mysqli_native_moodle_database.php: call to moodle_database->query_end()
    line 1476 of \lib\dml\moodle_database.php: call to mysqli_native_moodle_database->get_records_sql()
    line 1448 of \lib\dml\moodle_database.php: call to moodle_database->get_record_sql()
    line 1427 of \lib\dml\moodle_database.php: call to moodle_database->get_record_select()
    line 278 of \lib\classes\session\manager.php: call to moodle_database->get_record()
    line 79 of \lib\classes\session\manager.php: call to core\session\manager::initialise_user_session()
    line 773 of \lib\setup.php: call to core\session\manager::start()
    line 39 of \config.php: call to require_once()
    line 31 of \index.php: call to require_once()


Pelo que entendi, uma determinada tabela do banco não foi importada. Estranho, pois, ao final do processo de importação, eu recebi uma mensagem de êxito do phpMyAdmin, sem qualquer tipo de problema.


A estrutura do Moodle possui aproximadamente 25GB. Só o SQL exportado do servidor original tem mais de 5GB.

Contagem das avaliações:  -
Em resposta à Guilherme M.

Re: Erro ao ler a base de dados

por Eduardo Kraus -
Imagem de Plugin developers

Maior moodle que importei foi 850GB. Vou explicar como você pode exportar e importar com segurança um banco de dados tão grande.

Porque não usar o PHPMyAdmin

O PHPMyAdmin foi feito para administração simples do banco de dados. Porém para exportação e importação já tive problemas em banco de dados acima de 200MB.

Exportando o banco de dados

/usr/bin/mysqldump --force --opt --user=MYSQL_USER -pMYSQL_PASSWORD --databases MYSQL_DB | gzip > "BACKUP_DIR/moodle.sql.gz

Troque os amarelos por:

  • MYSQL_USER: Usuário de conexão com o banco de dados
  • MYSQL_PASSWORD: Senha de conexão com o banco de dados
  • MYSQL_DB: Nome do banco de dados a ser exportado
  • BACKUP_DIR: Caminho para salvar a backup.
Lembre-se que MYSQL_PASSWORD tem um p na frente que diz que esta é a senha.

Executou, agora aonde definiu o BACKUP_DIR tens um arquivo moodle.sql.gz que contem o SQL. Este arquivo é bem pequeno comparado com o arquivo .SQL gerado pelo banco de dados.

Lembre-se que se não tem acesso SSH mais tem acesso ao CPanel podes tentar usar a CRONTAB para executar este comando.

Porque não exporta em SQL como todo mundo faz?

Exportar como SQL gera um arquivo muito grande e vai custar um tempo muito maior para transferir o arquivo entre servidores.

Importando o SQL

Leve este arquivo para o novo servidor e execute o seguinte comando:

gunzip < moodle.sql.gz | mysql -u MYSQL_USER -pMYSQL_PASSWORD MYSQL_DB

Simples não? Nunca tive problemas.

Muito prazer, sou Eduardo Kraus
Professor, programador e apaixonado por Moodle
Leia meu Blog: moodle.eduardokraus.com
Assista meus vídeos: www.youtube.com/user/ProfEduardoKraus
Curta meu Facebook: www.facebook.com/ProfEduardoKraus

Contagem das avaliações:  (1)
Em resposta à Eduardo Kraus

Re: Erro ao ler a base de dados

por Guilherme M. -

De fato, o problema estava acontecendo porque a importação não aconteceu como deveria. Muito obrigado pela ajuda, agora está funcionando como deveria. sorriso

Contagem das avaliações:  -