Я перенес веб-сайт 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), чтобы соответствовать перенесенной схеме.