[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: MariaDB problemen met UTF-8



Hoi Geert en anderen,

Op 22-01-2024 om 07:00 schreef Geert Stappers:
On Sun, Jan 21, 2024 at 11:10:49PM +0100, Paul van der Vlis wrote:
Hallo,

Ik probeer een database te importeren in MariaDB,

A.u.b. iets `head -n 42 de_database_dump` laten zien
zodat duidelijk wordt wat de character_set van de database is.

Bovenaan staat:

SET NAMES utf8;
SET foreign_key_checks = 0;

En daarna worden de tabellen gedropt en dan aangemaakt met zoiets:
----------
CREATE TABLE `wp_actionscheduler_actions` (
....
) ENGINE=InnoDB AUTO_INCREMENT=15636 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-------------

Ik heb "SET NAMES utf8;" gewijzigd in "SET NAMES utf8mb4;" en dat lijkt dit probleem op te lossen!

Ik krijg wel weer een volgend probleem, blijkbaar accepteert hij geen lege string als tijd:
-----
ERROR 1292 (22007) at line 182395: Incorrect datetime value: '' for column `edagenda`.`wp_wc_admin_notes`.`date_reminder` at row 1
-----
Dat kon weer 'opgelost' worden met:
SET session sql_mode = 'ALLOW_INVALID_DATES';

Daarna krijg ik:
ERROR 1062 (23000) at line 182538: Duplicate entry '0' for key 'user_id'

Zo prutsen we verder, of dit goed wordt?

maar dit geeft een foutmelding:
-----
ERROR 1366 (22007) at line 139029: Incorrect string value: '\xF0\x9F\x91\x89
S...' for column `edagenda`.`wp_posts`.`post_content` at row 1
-----

'\xF0\x9F\x91\x89' blijkt een 4-bit UTF-8 teken, het blijkt een handje te
zijn: '👉'. Ik blijk erop te kunnen zoeken en vervangen, maar dan lukt het
importeren nog steeds niet en is er weer een ander teken met dit soort
problemen.

Tja,  character sets.

Niet mijn sterke kant...

Als ik in de SQL code kijk dan wordt "utf8mb4_unicode_520_ci" gebruikt bij
het aanmaken van de tabellen.

"tabellen"  en wat heeft de destination aan charset???

Volgens mij kan dat per database en tabel verschillen, en wordt het dus bepaald door de SQL.

Ik heb naar wat andere databasedumps gekeken, daar staat steeds boven:
/*!40101 SET NAMES utf8mb4 */;

Nu weet ik niet goed of dit commentaar is. Misschien verteld het het default.

<knip>

Iemand een idee?


Alleen een wild idee:   De database client (connectie) heeft
zijn eigen idee over wat de charset moet zijn.

De client is in dit geval PHP/Wordpress.

Bedankt voor het meedenken!

Groet,
Paul



--
Paul van der Vlis Linux systeembeheer Groningen
https://vandervlis.nl/


Reply to: