Eu tenho um banco de dados WordPress na minha máquina local que desejo transferir para um phpMyAdmin hospedado no cPanel. No entanto, quando tento importar o banco de dados para o ambiente, continuo recebendo este erro:
#1273 - Unknown collation: 'utf8mb4_unicode_ci'
Eu tentei pesquisar no Google e a única solução que posso encontrar é este erro phpmysql - # 1273 - # 1273 - agrupamento desconhecido: 'utf8mb4_general_ci', que até agora não é de grande ajuda. Tentei limpar os cookies, mas ainda não funcionará. Por favor ajude!
mysql
wordpress
phpmyadmin
cpanel
Wairimu Murigi
fonte
fonte
Respostas:
Eu tive o mesmo problema que todos os nossos servidores executam versões mais antigas do MySQL. Isso pode ser resolvido executando um script PHP. Salve esse código em um arquivo e execute-o digitando o nome, o usuário e a senha do banco de dados, e ele mudará o agrupamento de
utf8mb4/utf8mb4_unicode_ci
parautf8/utf8_general_ci
fonte
mysqldump --compatible=mysql4
db-convert.php
mysqldump --compatible=mysql4
ou a resposta abaixo é uma opção melhor. Não acho que seja uma boa idéia mudar algo assim em um site ao vivo. Melhor exportar no formato correto ou, se essa não for uma opção, edite o arquivo exportado.A técnica neste post funcionou para mim
1) Clique na guia "Exportar" para o banco de dados
2) Clique no botão de opção "Personalizado"
3) Vá para a seção "Opções específicas de formato" e altere o menu suspenso para "Sistema de banco de dados ou servidor MySQL mais antigo para maximizar a compatibilidade de saída com:" de NENHUM para MYSQL40.
4) Role até o final e clique em "IR".
Não tenho certeza se isso causa alguma perda de dados; no entanto, na única vez em que tentei, não notei nenhuma. Nem alguém que respondeu nos fóruns vinculados acima.
Editar 8/12/16 - Acredito que a exportação de um banco de dados dessa maneira me faz perder dados salvos nos widgets do Visual Studio TinyMCE Visual Editor , embora eu não tenha executado vários testes para confirmar.
fonte
Se você já exportou um
.sql
arquivo, a melhor coisa a fazer é Localizar e substituir o seguinte, se você o tiver em seu arquivo:utf8mb4_0900_ai_ci
parautf8_unicode_ci
utf8mb4
parautf8
utf8_unicode_520_ci
parautf8_unicode_ci
Ele será substituído
utf8mb4_unicode_ci
porutf8_unicode_ci
. Agora você vai para o seu phpMyAdmin cPanel e definir o agrupamento DB parautf8_unicode_ci
através Operações> Agrupamento .Se você estiver exportando para a
.sql
, é melhor alterar o formato de como está exportando o arquivo. Confira a resposta do Evster (está na mesma página que esta)fonte
sed -i.bak s/utf8mb4/utf8/g FILE_NAME
. Ele encontrará todas as ocorrências deutf8mb4
FILE_NAME e substitui-o porutf8
enquanto salva uma cópia do arquivo original em FILE_NAME.bak. Pode ser necessário ajustá-lo para especificar a coalizão exata no seu caso, mas este é um começo :)vi dump.sql
e, em seguida, através de fazer isso::%s/uf8mb4/utf8/g
.utf8_0900_ai_ci
porutf8_unicode_ci
eu uso isso no linux:
então restaure o seu_arquivo.sql
fonte
sed -i '' ....
funciona.sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql
O Wordpress 4.2 introduziu o suporte à codificação de caracteres "utf8mb4" por razões de segurança , mas apenas o MySQL 5.5.3 e superior o suportam. A maneira como o instalador (e o atualizador) lida com isso é que ele verifica sua versão do MySQL e seu banco de dados será atualizado para utfmb4 somente se for suportado .
Isso parece ótimo em teoria, mas o problema (como você descobriu) é quando você está migrando bancos de dados de um servidor MySQL que suporta utf8mb4 para outro que não. Enquanto o contrário deve funcionar, é basicamente uma operação unidirecional.
Conforme indicado pelo Evster, você pode ter sucesso usando o recurso "Exportar" do PHPMYAdmin. Use " Método de Exportação: Personalizado " e para o " Sistema de banco de dados ou servidor MySQL mais antigo para maximizar a compatibilidade de saída com: " selecione " MYSQL 40 ".
Para uma exportação de linha de comando usando o mysqldump. Dê uma olhada na bandeira:
Nota: Se houver caracteres de 4 bytes no banco de dados, eles serão corrompidos.
Por fim, para quem usa o popular plug-in WP Migrate DB PRO, um usuário deste segmento do Wordpress.org relata que a migração é sempre tratada adequadamente, mas não consegui encontrar nada oficial.
No momento, não parece haver uma maneira de desativar a atualização do banco de dados. Portanto, se você estiver usando um fluxo de trabalho no qual está migrando um site de um servidor ou host local com o MySQL> 5.5.3 para um que use uma versão mais antiga do MySQL, você poderá ficar sem sorte.
fonte
TYPE=MyISAM
que foi removido na v5.1. Faça uma pesquisa e substitua porENGINE=MyISAM
. Não pude ver uma maneira de contornar isso usando asmysqldump
opções de saída.No meu caso, o meu
novo servidor estava em execução
MySQL 5.5
, oservidor antigo estava em execução
MySQL 5.6
.Então, recebi esse erro ao tentar importar o
.sql
arquivo que havia exportado do meu servidor antigo.O MySQL 5.5 não suporta
utf8mb4_unicode_520_ci
, mas oMySQL 5.6 sim.
A atualização para
MySQL 5.6
o novo servidor resolveu o agrupamento do erro!Se você deseja manter o MySQL 5.5, você pode:
- fazer uma cópia do seu
.sql
arquivo exportado- substituir instâncias
utf8mb4unicode520_ci
eutf8mb4_unicode_520_ci
... por
utf8mb4_unicode_ci
- importar seu
.sql
arquivo atualizado .fonte
mysql-server-5.6
pacote que você pode instalar que removerá automaticamente a versão 5.5).Há uma linha no wp-config.php:
Se você seguir de Markouver / de Evster instruções, não se esqueça de alterar esta linha no servidor de produção para
para corrigir caracteres quebrados de 4 bytes
fonte
define('DB_COLLATE', 'utf8_general_ci');
também. Isso me ajudou.Após uma longa pesquisa, encontrei a solução acima:
Primeiramente, você altera o padrão wp-config.php> Database DB_CHARSET para "utf8"
Clique na guia "Exportar" para o banco de dados
Clique no botão de opção "Personalizado"
Vá para a seção "Opções específicas de formato" e altere o menu suspenso "Sistema de banco de dados ou servidor MySQL mais antigo para maximizar a compatibilidade de saída com:" de NENHUM para MYSQL40.
Role até o final e clique em ir
Então você está.
fonte
Parece que o seu host não fornece uma versão MySQL capaz de executar tabelas com agrupamento utf8mb4.
As tabelas do WordPress foram alteradas para utf8mb4 com a versão 4.2 (lançada em 23 de abril de 2015) para oferecer suporte a Emojis, mas você precisa do MySQL 5.5.3 para usá-lo. 5.5.3 é a partir de março de 2010, portanto normalmente deve estar amplamente disponível. Você pode verificar se o seu hoster oferece essa versão?
Caso contrário, e uma atualização não é possível, talvez você precise procurar outro hoster para executar as versões mais recentes do WordPress (e sempre faça isso por razões de segurança).
fonte
Então eu resolvi dessa maneira, do MySQL 5.6 ao MySQL 5.5:
(Opcional) Crie um
.sql.gz
arquivo:Explicação
Como explicado nesta resposta , este é apenas o equivalente a estas opções do phpMyAdmin: "Sistema de banco de dados ou servidor MySQL mais antigo para maximizar a compatibilidade de saída com:" menu suspenso, selecione "MYSQL 40" .
Precisamos disso, para resolver esse problema:
fonte
$ sed -i'' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
. Se você deseja manter uma cópia comodatabase_name.sql.bak
antes da substituição do sed:$ sed -i'bak' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
sed
.--compatible=ansi
opçãoEu também experimentei esse problema. A solução que funcionou para mim foi abrir o banco de dados local com o Sequel Pro e atualizar Encoding and Collation para utf8 / utf8_bin para cada tabela antes de importar.
fonte
A maneira mais fácil de fazer é exportar seu banco de dados
.sql
, abri-lo no Notepad ++ e "Pesquisar e substituir" outf8mb4_unicode_ci
parautf8_unicode_ci
e também substituirutf8mb4
porutf8
. Também não se esqueça de alterar o agrupamento do banco de dados parautf8_unicode_ci
(Operações> Agrupamento).fonte
abra o arquivo sql no Notepad ++ e
ctrl + H.
depois coloque "utf8mb4
" na pesquisa e "utf8
" em substituir. O problema será corrigido então.fonte