Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak naprawić błędy nieprawidłowej wartości ciągu?

AKTUALIZUJ na poniższą odpowiedź:

Czas, w którym zadano pytanie, „UTF8” w MySQL oznaczał utf8mb3 . W międzyczasie utf8mb4 został dodany, ale według mojej wiedzy MySQLs "UTF8" nie został zmieniony na utf8mb4 .

Oznacza to, że musisz wpisać „utf8mb4”, jeśli masz na myśli (i powinieneś użyć utf8mb4 )

Zachowam to tutaj, zamiast tylko edytować odpowiedź, aby było jasne, że nadal istnieje różnica przy mówieniu „UTF8”

Oryginał

Nie sugerowałbym odpowiedzi Richiesa, ponieważ niszczysz dane w bazie danych. Nie naprawisz swojego problemu, ale spróbujesz go "ukryć" i nie będziesz w stanie wykonać podstawowych operacji na bazie danych na zniekształconych danych.

Jeśli napotkasz ten błąd, albo przesyłane dane nie są zakodowane w UTF-8, albo Twoje połączenie nie jest w UTF-8. Najpierw sprawdź, czy źródło danych (plik, ...) naprawdę to UTF-8.

Następnie sprawdź połączenie z bazą danych, powinieneś to zrobić po połączeniu:

SET NAMES 'utf8mb4';
SET CHARACTER SET utf8mb4;

Następnie sprawdź, czy tabele, w których przechowywane są dane, mają zestaw znaków 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`
;

Na koniec sprawdź ustawienia bazy danych:

mysql> show variables like '%colla%';
mysql> show variables like '%charac%';

Jeśli źródło, transport i miejsce docelowe to utf8mb4, Twój problem zniknął;)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przeprowadzić wyszukiwanie z uwzględnieniem akcentu w MySql

  2. Jak uzupełnić ciąg znakami wiodącymi/końcowymi w MySQL — LPAD(), RPAD()

  3. Jak skonfigurować strukturę indeksu ElasticSearch z wieloma powiązaniami encji?

  4. Mysql:jak wybrać grupy posiadające określone wartości?

  5. Funkcja MySQL DEGREES() — konwersja z radianów na stopnie