Сайт Umbraco, использующий MySQL, не интерпретирует CHAR (36) как Guid - PullRequest
0 голосов
/ 22 марта 2019

Я перенес веб-сайт Umbraco на новый сервер с MySQL 8 и MySQL ODBC Connector 8.0.

При попытке извлечь контент из базы данных Umbraco мы получаем ошибку: Invalid cast from 'System.String' to 'System.Nullable'1[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.

После некоторой отладки мы обнаружили, что столбец CHAR (36) в базе данных Umbraco неправильно интерпретируется как строка C #, тогда как его следует интерпретировать как Guid.

Таким образом, проблема в том, что столбец CHAR (36) неправильно интерпретируется ORM как строка, когда он должен интерпретировать его как Guid. Я понимаю, что ожидаемое поведение для MySQL заключается в том, что CHAR (36) интерпретируется как Guid.

Мы попытались установить для параметра OldGuids в строке подключения значения true и false, но безрезультатно.

Исправить это на уровне кода нельзя.

База данных была перенесена с использованием MySQL Workbench, одна вещь, которую мы изменили после перенастройки, установила кодировку по умолчанию для схемы в utf-8 (из utf-8mb4), чтобы соответствовать перенесенной схеме.

...