Почему я не могу сохранить строку с символом ударения в этой таблице mysql? - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь сохранить строку текста в столбце mysql. Строка текста содержит слово с символом ударения:

Labrèche

Таблица кодируется с использованием utf8mb4, как видно из следующего оператора:

mysql> SHOW CREATE TABLE forge.fba_shipments_reports\G
*************************** 1. row ***************************
       Table: fba_shipments_reports
Create Table: CREATE TABLE `fba_shipments_reports` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `report_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `report_line` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `added_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
1 row in set (0.00 sec)

Я проверил переменные сеанса для соединения моего приложения Laravel, и он также показывает utf8mb4:

>>> DB::select(DB::raw("SHOW SESSION VARIABLES LIKE 'character\_set\_%'"));
=> [
     {#3346
       +"Variable_name": "character_set_client",
       +"Value": "utf8mb4",
     },
     {#3351
       +"Variable_name": "character_set_connection",
       +"Value": "utf8mb4",
     },
     {#3344
       +"Variable_name": "character_set_database",
       +"Value": "utf8",
     },
     {#3352
       +"Variable_name": "character_set_filesystem",
       +"Value": "binary",
     },
     {#3349
       +"Variable_name": "character_set_results",
       +"Value": "utf8mb4",
     },
     {#3340
       +"Variable_name": "character_set_server",
       +"Value": "latin1",
     },
     {#3341
       +"Variable_name": "character_set_system",
       +"Value": "utf8",
     },
   ]

Когда я пытаюсь сохранить эту строку, я получаю ошибку:

Подсветка / База данных / QueryException с сообщением «SQLSTATE [HY000]: общая ошибка: 1366 Неверное строковое значение: '/ xE8che / x09G ...» для столбца «report_line» в строке 1 (SQL: вставить в fba_shipments_reports (report_id, report_line) values ​​(foo, Labr�che)) '

Почему этот символ вызывает проблемы, если я использую кодировку utf8mb4? Я думал, что эта кодировка должна поддерживать эти символы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...