sql >> Database >  >> RDS >> Mysql

Hoe fouten in de onjuiste tekenreekswaarde op te lossen?

UPDATE op het onderstaande antwoord:

Op het moment dat de vraag werd gesteld, betekende "UTF8" in MySQL utf8mb3 . In de tussentijd, utf8mb4 is toegevoegd, maar voor zover ik weet is MySQL's "UTF8" niet gewijzigd in utf8mb4 .

Dat betekent dat je specifiek "utf8mb4" moet zetten, als je het meent (en je moet utf8mb4 gebruiken )

Ik zal dit hier bewaren in plaats van alleen het antwoord te bewerken, om duidelijk te maken dat er nog steeds een verschil is als je "UTF8" zegt

Origineel

Ik zou Richies niet aanraden te antwoorden, omdat je de gegevens in de database verknoeit. Je zou je probleem niet oplossen, maar proberen het te "verbergen" en niet in staat zijn om essentiële databasebewerkingen uit te voeren met de verprutste gegevens.

Als u deze fout tegenkomt, zijn de gegevens die u verzendt niet UTF-8-gecodeerd of is uw verbinding niet UTF-8. Controleer eerst of de gegevensbron (een bestand, ...) echt is UTF-8.

Controleer vervolgens uw databaseverbinding, u moet dit doen nadat u verbinding heeft gemaakt:

SET NAMES 'utf8mb4';
SET CHARACTER SET utf8mb4;

Controleer vervolgens of de tabellen waarin de gegevens zijn opgeslagen de tekenset utf8mb4 hebben:

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`
;

Controleer als laatste uw database-instellingen:

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

Als bron, transport en bestemming utf8mb4 zijn, is uw probleem verdwenen;)



  1. MySQL ATAN2() Functie – Retourneer de boogtangens van 2 waarden

  2. Best practices voor MySQL-replicatie

  3. Is een impasse mogelijk bij het bijwerken en verwijderen van verschillende rijen in een tabel?

  4. Query voor het tellen van verschillende waarden in een voortschrijdend datumbereik