Nome do banco de dados MySQL com hífen

Nome do banco de dados MySQL com hífen

Recentemente atualizei meu servidor de banco de dados temporário do MySQL 5.0.84 para 5.1.72. 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 /var/lib/mysqlpassou a ser gss@022dapp, mas quando eu faço login no mysql usando mysql -u root -pe digito show databases;ele lista o nome do banco de dados gss-appapenas e posso Use Database gss-applistar as tabelas usando show tableso comando.

A restauração falhou com um erro Got a packet bigger than --max_allowed_packet size. Dessa vez, o banco de dados foi parcialmente restaurado e aproveitei a oportunidade para renomear a gss@022dapppasta gss-appe fazer login no shell mysql.

Ele listou o nome do banco de dados como @mysql@gss-appe não consegui entrar no banco de dados. Agora estou executando a restauração do banco de dados mais uma vez --max_allowed_packet_size=1024Me vejo que a gss@022dapppasta foi criada em /var/lib/mysql.

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

Responder1

Especificamente para sua pergunta sobre o uso de um nome diferente durante a restauração: com mysqldump você pode fazer mysqldump databasenameou mysqldump --databases databasename. O primeiro não coloca uma create dbdeclaração, o segundo sim.

Depois de fazer o dump com a instrução anterior, você pode simplesmente criar manualmente um novo banco de dados e carregar o dump com algo como mysql newdbname < dump.sql. Neste último caso, você pode simplesmente abrir o arquivo dump e alterar o nome.

Uma nota lateral, acho que é um design ruim por mysqldumpparte do MySQL ter essa diferença, aliás. Se você fizer backup sem a --databasesinstrução, será necessário criar um banco de dados antes de poder restaurar. E esse banco de dados pode ter um conjunto de caracteres ou agrupamento diferente daquele que o banco de dados tinha originalmente. Na minha opinião, se você despejar um banco de dados, ele deverá conter todos os dados e metadados. O mesmo vale para ter que fornecer --routinese --events. Posso imaginar opções como --no-routinespodem ser úteis, mas por padrãonãorotinas de despejo? Hum.

informação relacionada