Rui Carlos Posted July 27, 2013 at 07:06 PM Report #520168 Posted July 27, 2013 at 07:06 PM Tenho o seguinte problema: tenho bases de dados que foram criadas com o encoding default do MySQL (Latin1), mas em que a aplicação que usava a BD trabalhava com UTF8. Ou seja, foram introduzidos dados codificados em UTF8 na BD em Latin1. Isto não é muito problemático, e a aplicação até não costuma dar problemas. Só que agora estou a fazer a migração das aplicações/BDs, e está a ser uma valente dor de cabeça... É que não consigo acertar com os encodings... Eu lembro-me que já consegui fazer uma migração bem sucedida apesar deste problema, ao fim de tentar dezenas de métodos diferentes. Mas agora não encontro forma de o fazer. Basicamente precisava de migrar a BD, de modo a que a aplicação fique a funcionar. Como extra, também era porreiro conseguir configurar o encoding correctamente, mas dava-me por contente se conseguisse fazer a migração sem ficar com problemas de encoding na aplicação. Rui Carlos Gonçalves
Rui Carlos Posted July 27, 2013 at 08:00 PM Author Report #520172 Posted July 27, 2013 at 08:00 PM Parece que à n-ésima tentativa lá funcionou alguma coisa... Usei os seguintes comandos: mysqldump -u <user> -p --default-character-set=latin1 --skip-set-charset <bd1> > dump.sql mysql -u <user> -p --default-character-set utf8 <bd2> < dump.sql Isto apenas me permitiu importar os dados na nova BD de modo a que a aplicação funcione. No entanto, continuo com a BD configurada em Latin1 com dados em UTF8. Pelo que estive a ver, para corrigir o encoding, terei que ir coluna a coluna, alterar primeiro para o tipo BLOB e depois voltar a alterar para texto com o encoding correcto, o que não é lá muito prático (visto que numa das BDs teria centenas de colunas para corrigir)... Rui Carlos Gonçalves
brunoais Posted July 27, 2013 at 10:03 PM Report #520177 Posted July 27, 2013 at 10:03 PM Estás a fazer a migração através de exportação para um ficheiro e, depois, importação, estás a fazer através de uma aplicação (por exemplo, feita em php, como o phpmyadmin ou qq outra aplicação que tenhas feito) ou estás a fazer usando comunicação directa entre as duas DB? "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
Rui Carlos Posted July 27, 2013 at 10:27 PM Author Report #520179 Posted July 27, 2013 at 10:27 PM Para exportar as BDs antigas posso usar phpMyAdmin ou mysqldump. Para importar estou a usar o MySQL directamente no terminal. Rui Carlos Gonçalves
brunoais Posted July 28, 2013 at 08:07 AM Report #520192 Posted July 28, 2013 at 08:07 AM (edited) O que eu tentava fazer era usar uma aplicação intermédia, por exemplo, PHP e fazer 1 ligação à 1 DB usando o default e uma ligação à 2ª usando o modo utf8. Senão, podes tentar obter o dump para ficheiro, depois converter o conteúdo do ficheiro para utf-8 e executar o SQL no outro servidor. Acho que dá para fazer isso a partir da terminal. Edited July 28, 2013 at 08:07 AM by brunoais "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
Rui Carlos Posted July 28, 2013 at 09:50 AM Author Report #520195 Posted July 28, 2013 at 09:50 AM Usar o PHP não me parece muito prático, visto que tenho várias BDs, com dezenas de tabelas. Já consegui a parte de criar um dump correcto, em UTF8 (ver segundo post). Agora as tabelas ainda são criadas novamente em Latin1 (com dados UTF8). Possivelmente se editasse o dump removendo as definições do encoding nos CREATE TABLE resolvia o problema, mas ainda não arrisquei fazer isto, pois seria complicado validar o resultado. O ideal era mesmo que o MySQL me deixasse mudar o encoding das tabelas sem mexer na informação... Rui Carlos Gonçalves
brunoais Posted July 28, 2013 at 09:18 PM Report #520221 Posted July 28, 2013 at 09:18 PM Isso dá, podes mudar o encoding, o problema é exactamente isso... a informação n muda :S. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
brunoais Posted August 9, 2013 at 03:15 PM Report #521364 Posted August 9, 2013 at 03:15 PM @Rui Carlos já está resolvido? "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
Rui Carlos Posted August 9, 2013 at 04:33 PM Author Report #521370 Posted August 9, 2013 at 04:33 PM Estou no ponto em que estava no segundo post. A migração está feita, e está a funcionar, mas continuo com a BD com a meta-informação sobre encodings errada. Penso que o único problema que isso pode trazer é nas pesquisas de texto, o que não é grave, daí ter optado por não arriscar mexer nos CREATE TABLE do dump (que devia permitir resolver o problema da meta-informação). Rui Carlos Gonçalves
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now