Existe um MySQL table
que tem esta definição tirada de SQLYog Enterprise
:
Table Create Table
----------------- ---------------------------------------------------------
etape_prospection CREATE TABLE `etape_prospection` (
`etape_prosp_id` int(10) NOT NULL AUTO_INCREMENT,
`type_prosp_id` int(10) NOT NULL DEFAULT '0',
`prosp_id` int(10) NOT NULL DEFAULT '0',
`etape_prosp_date` datetime DEFAULT NULL,
`etape_prosp_comment` text,
PRIMARY KEY (`etape_prosp_id`),
KEY `concerne_fk` (`prosp_id`),
KEY `de_type_fk` (`type_prosp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
Eu quero mudar o default charset
desta tabela de latin1
para utf8
. Como fazer isso ?
Respostas:
Se você quiser alterar a tabela
default character set
e todas as colunas de caracteres para um novo conjunto de caracteres, use uma instrução como esta:Portanto, a consulta será:
fonte
ALTER TABLE tbl CHARACTER SET utf8
sintaxe sugerida por outros, alterará apenas a codificação padrão da tabela; as colunas existentes não serão convertidas como seriam se você usar esta resposta.SELECT concat('alter table ', table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM information_schema.tables WHERE table_schema='<your_database_name>' and table_collation != 'utf8_general_ci' GROUP BY table_name;
ALTER TABLE tbl CHARACTER SET utf8
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Alterar o conjunto de caracteres padrão da tabela:
Para alterar o conjunto de caracteres da coluna da string, exceda esta consulta:
fonte
O
ALTER TABLE
comando MySQL deve fazer o truque. O comando a seguir mudará o conjunto de caracteres padrão de sua tabela e o conjunto de caracteres de todas as suas colunas para UTF8.Este comando converterá todas as colunas semelhantes a texto na tabela para o novo conjunto de caracteres. Os conjuntos de caracteres usam diferentes quantidades de dados por caractere, portanto, o MySQL converterá o tipo de algumas colunas para garantir que haja espaço suficiente para caber o mesmo número de caracteres do antigo tipo de coluna.
Eu recomendo que você leia a documentação ALTER TABLE MySQL antes de modificar qualquer dado ativo.
fonte
Se alguém estiver procurando por uma solução completa para alterar o conjunto de caracteres padrão para todas as tabelas do banco de dados e converter os dados, pode ser um:
Você pode colocar este código dentro do arquivo, por exemplo,
chg_char_set.sql
e executá-lo, por exemplo, chamando-o do terminal MySQL:Em seguida, chame o procedimento definido com os parâmetros de entrada desejados, por exemplo
Depois de testar os resultados, você pode descartar esses procedimentos armazenados:
fonte
Você pode alterar o padrão com um,
alter table set default charset
mas isso não mudará o conjunto de caracteres das colunas existentes. Para mudar isso, você precisa usar aalter table modify column
.Alterar o conjunto de caracteres de uma coluna significa apenas que ela será capaz de armazenar uma gama maior de caracteres. Seu aplicativo se comunica com o banco de dados usando o cliente mysql, portanto, você também pode precisar alterar a codificação do cliente.
fonte