nome do banco de dados MySQL com hífen

1

Atualizei recentemente meu servidor de banco de dados de preparo do MySQL 5.0.84 para 5.1.72. Eu estou tentando restaurar o mysqldump após a atualização. O nome do banco de dados no dump é gss-app . Mas o nome da pasta do banco de dados em /var/lib/mysql foi gss@022dapp , mas quando eu logar no mysql usando mysql -u root -p e tipo show databases; ele lista o nome do banco de dados como gss-app e eu posso Use Database gss-app e listar tabelas usando o comando show tables .

A restauração falhou com um erro Got a packet bigger than --max_allowed_packet size . Naquela época, o banco de dados foi parcialmente restaurado e aproveitei essa oportunidade para renomear a pasta gss@022dapp para gss-app e efetuar login no shell mysql.

Ele listou o nome do banco de dados como @mysql@gss-app e não consegui entrar no banco de dados. Agora estou executando a restauração do banco de dados novamente com --max_allowed_packet_size=1024M e vejo a pasta gss@022dapp foi criada em /var/lib/mysql .

Devo me preocupar com o nome da pasta em /var/lib/mysql ? Ou posso usar um nome de banco de dados diferente durante a restauração?

    
por Manny0606 27.02.2015 / 00:35

1 resposta

1

Especificamente para sua pergunta sobre o uso de um nome diferente durante a restauração: com mysqldump você pode fazer mysqldump databasename ou mysqldump --databases databasename . O primeiro não coloca uma declaração create db , o último faz.

Quando você tiver feito o dump com a instrução anterior, basta criar manualmente um novo db e carregar o dump com algo como mysql newdbname < dump.sql . No caso deste último, você pode simplesmente abrir o arquivo de despejo e alterar o nome.

Um sidenote, eu acho que é um projeto ruim na parte mysqldump do MySQL ter essa diferença, BTW. Se você fizer backup sem a instrução --databases , será necessário primeiro criar um banco de dados para poder restaurar. E esse banco de dados pode ter um charset ou agrupamento diferente do que o banco de dados tinha originalmente. Na minha opinião, se você despejar um banco de dados, ele deve conter todos os dados e metadados. O mesmo vale para ter que fornecer --routines e --events . Eu posso imaginar opções como --no-routines pode ser útil, mas por padrão não despejar rotinas? Hmm.

    
por 13.03.2015 / 08:58

Tags