У меня есть проблема с AspNet Identity и MySql, проблема в ошибке, которая действительно блокирует меня, эта ошибка следующая:
указанный ключ был слишком длинным максимальная длина ключа 767 байт
Теперь я следовал этому руководству по использованию MySql с идентификацией:
Я хочу сказать, что у меня был прогресс, потому что теперь, по крайней мере, я получаю некоторые таблицы, сгенерированные в MySQL, но я стек по этой проблеме, долгое время пытаюсь решить это, но безуспешно.
Ошибка, которую я получаю, находится в этой части:
public void InitializeDatabase(ApplicationDbContext context)
{
if (!context.Database.Exists())
{
// if database did not exist before - create it
context.Database.Create();
}
else
{
// query to check if MigrationHistory table is present in the database
var migrationHistoryTableExists = ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery<int>(
string.Format(
"SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'",
"Server=127.0.0.1;Database=mydb;uid=root;pwd=mypass;port=3351;"));
// if MigrationHistory table is not there (which is the case first time we run) - create it
if (migrationHistoryTableExists.FirstOrDefault() == 0)
{
context.Database.Delete();
context.Database.Create(); //<<<< i get here error
}
}
}
Так что это выдает ошибку: context.Database.Create();
Я пытался выяснить, в чем именно проблема, но я не мог найти :(
Я попытался сравнить данные в базе данных, сгенерированной сервером sql, и поместить ту же информацию в таблицу миграции, и обычно я могу поместить туда те же значения из инструкции вставки в рабочей среде.
Может быть, кто-нибудь может помочь мне пройти через это?
Просто заметьте, что в конце все таблицы создаются, но ничего не вставляется из-за ошибки:/
Вот все таблицы, созданные в схеме mysql:
У меня есть небольшое обновление: кажется, что он пытается сделать комбинированный ПК из двух столбцов migrationId и contextkey, поэтому вы получаете такую ошибку.
Я мог воспроизвести это на своем рабочем месте, я попытался изменить таблицу, установив эти столбцы как PK, и я получил точно такую же ошибку. Но как сказать, что например должен быть установлен только 1 ПК?