Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como corrigir erros de valor de string incorreto?


ATUALIZAÇÃO para a resposta abaixo:

Quando a pergunta foi feita, "UTF8" no MySQL significava utf8mb3 . Enquanto isso, utf8mb4 foi adicionado, mas que eu saiba MySQLs "UTF8" não foi alterado para significar utf8mb4 .

Isso significa que você precisa colocar especificamente "utf8mb4", se quiser (e deve usar utf8mb4 )

Vou manter isso aqui em vez de apenas editar a resposta, para deixar claro que ainda há uma diferença ao dizer "UTF8"

Original

Eu não sugeriria a resposta de Richies, porque você está estragando os dados dentro do banco de dados. Você não resolveria seu problema, mas tentaria "escondê-lo" e não conseguir realizar operações essenciais de banco de dados com os dados degradados.

Se você encontrar esse erro, os dados que você está enviando não são codificados em UTF-8 ou sua conexão não é UTF-8. Primeiro, verifique se a fonte de dados (um arquivo, ...) realmente é UTF-8.

Em seguida, verifique sua conexão com o banco de dados, você deve fazer isso após a conexão:
SET NAMES 'utf8mb4';
SET CHARACTER SET utf8mb4;

Em seguida, verifique se as tabelas onde os dados estão armazenados possuem o conjunto de caracteres utf8mb4:
SELECT
  `tables`.`TABLE_NAME`,
  `collations`.`character_set_name`
FROM
  `information_schema`.`TABLES` AS `tables`,
  `information_schema`.`COLLATION_CHARACTER_SET_APPLICABILITY` AS `collations`
WHERE
  `tables`.`table_schema` = DATABASE()
  AND `collations`.`collation_name` = `tables`.`table_collation`
;

Por último, verifique as configurações do seu banco de dados:
mysql> show variables like '%colla%';
mysql> show variables like '%charac%';

Se a origem, transporte e destino forem utf8mb4, seu problema acabou;)