Проблема
При выполнении миграции на только что установленную базу данных MySQL (которая отлично работает на базе данных SQL Server) происходит сбой в первой создаваемой таблице с ошибкой:
Неправильное использование пространственного / полнотекстового / хеш-индекса и явного порядка индекса
Это происходит, когда он пытается запустить следующий Index
метод:
CreateTable(
"dbo.AuditLog",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(maxLength: 1000, unicode: false),
What = c.String(maxLength: 1000, unicode: false),
When = c.DateTime(nullable: false, precision: 6),
Why = c.String(maxLength: 1000, unicode: false),
Where = c.Int(nullable: false),
Who_Id = c.String(maxLength: 128, unicode: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.AspNetUsers", t => t.Who_Id);
.Index(t => t.Who_Id);
После использования флага -verbose
на Update-Database
я вижу, что команда, вызывающая эту ошибку, выглядит следующим образом:
CREATE index `IX_Who_Id` on `AuditLog` (`Who_Id` DESC) using HASH
Поиск в Интернете не очень полезен для решения этой проблемы.Самое близкое, что я видел, это этот вопрос переполнения стека , но он не работал для меня.
Фон
Запуск миграциипротив старых (~ 3 года назад) баз данных MySQL работает нормально, но когда я установил новый MySQL, я получал ошибки об аутентификации по паролю, которые могли бы быть решены путем обновления пакетов MySQL NuGet или принудительного использования пользователями устаревшего пароля.См. здесь для решения этой проблемы.
Я обновил свои пакеты MySQL NuGet до последней версии, и это вызвало другую ошибку (можно увидеть здесь ), которую я решил с помощьюпонижение до более нового пакета, чем тот, с которого я начал, но ниже, чем последний, поскольку люди упоминали, что API не работают должным образом.
Так что на этом этапе он подключается нормально, но кажется, что сама база данных не любиткоманда index, которую генерирует Entity Framework.
Я рад предоставить дополнительную информацию, если это необходимо.
Версии
- MySql.Данные 6.10.7
- MySql.Data.Entity 6.10.7
- EntityFramework 6.2.0
- MySql База данных 8.0.11 Сообщество
Обновление
Мне удалось запустить его на MySql вручную, выполнив команду SQL и заменив вызов .Index()
при нацеливании на экземпляры MySql.
Однако даже после запускамиграции, по-видимому, успешныВ общем, MySql.Data (.Entity) продолжал выдавать ошибки во время выполнения.
При возврате БД к предыдущей основной версии MySql 5 код работает без каких-либо изменений.
Я подожду некоторое время, пока пакеты NuGet и база данных MySql обновятся, прежде чем делать это еще раз.