Я создал миграцию, чтобы добавить несколько таблиц и обновить одну таблицу (добавить один столбец). База данных — MySQL 8.0.31, а поставщик EF — MySql.EntityFrameworkCore от Oracle.
Миграция завершилась успешно, но когда я запускаю обновление базы данных dotnet ef, я получаю эту ошибку, которая Не могу найти в Интернете.
Для контекста: это совершенно новый проект, в котором было всего две предыдущие миграции.
Ошибка:
Я создал миграцию, чтобы добавить несколько таблиц и обновить одну таблицу (добавить один столбец). База данных — MySQL 8.0.31, а поставщик EF — MySql.EntityFrameworkCore от Oracle. Миграция завершилась успешно, но когда я запускаю обновление базы данных dotnet ef, я получаю эту ошибку, которая Не могу найти в Интернете. Для контекста: это совершенно новый проект, в котором было всего две предыдущие миграции. Ошибка: [code]fail: Microsoft.EntityFrameworkCore.Database.Command[20102] Failed executing DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] DROP PROCEDURE IF EXISTS `MYSQL_BEFORE_DROP_PRIMARY_KEY`; CREATE PROCEDURE `MYSQL_BEFORE_DROP_PRIMARY_KEY`(IN `SCHEMA_NAME_ARGUMENT` VARCHAR(255), IN `TABLE_NAME_ARGUMENT` VARCHAR(255)) BEGIN DECLARE HAS_AUTO_INCREMENT_ID TINYINT(1); DECLARE PRIMARY_KEY_COLUMN_NAME VARCHAR(255); DECLARE PRIMARY_KEY_TYPE VARCHAR(255); DECLARE SQL_EXP VARCHAR(1000); SELECT COUNT(*) INTO HAS_AUTO_INCREMENT_ID FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = (SELECT IFNULL(SCHEMA_NAME_ARGUMENT, SCHEMA())) AND `TABLE_NAME` = TABLE_NAME_ARGUMENT AND `Extra` = 'auto_increment' AND `COLUMN_KEY` = 'PRI' LIMIT 1; IF HAS_AUTO_INCREMENT_ID THEN SELECT `COLUMN_TYPE` INTO PRIMARY_KEY_TYPE FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = (SELECT IFNULL(SCHEMA_NAME_ARGUMENT, SCHEMA())) AND `TABLE_NAME` = TABLE_NAME_ARGUMENT AND `COLUMN_KEY` = 'PRI' LIMIT 1; SELECT `COLUMN_NAME` INTO PRIMARY_KEY_COLUMN_NAME FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = (SELECT IFNULL(SCHEMA_NAME_ARGUMENT, SCHEMA())) AND `TABLE_NAME` = TABLE_NAME_ARGUMENT AND `COLUMN_KEY` = 'PRI' LIMIT 1; SET SQL_EXP = CONCAT('ALTER TABLE `', (SELECT IFNULL(SCHEMA_NAME_ARGUMENT, SCHEMA())), '`.`', TABLE_NAME_ARGUMENT, '` MODIFY COLUMN `', PRIMARY_KEY_COLUMN_NAME, '` ', PRIMARY_KEY_TYPE, ' NOT NULL;'); SET @SQL_EXP = SQL_EXP; PREPARE SQL_EXP_EXECUTE FROM @SQL_EXP; EXECUTE SQL_EXP_EXECUTE; DEALLOCATE PREPARE SQL_EXP_EXECUTE; END IF; END; Failed executing DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered during command execution. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Parameter '@SQL_EXP' must be defined. at MySql.Data.MySqlClient.Statement.SerializeParameterAsync(MySqlParameterCollection parameters, MySqlPacket packet, String parmName, Int32 parameterIndex, Boolean execAsync) at MySql.Data.MySqlClient.Statement.InternalBindParametersAsync(String sql, MySqlParameterCollection parameters, MySqlPacket packet, Boolean execAsync) at MySql.Data.MySqlClient.Statement.BindParametersAsync(Boolean execAsync) at MySql.Data.MySqlClient.Statement.ExecuteAsync(Boolean execAsync) at MySql.Data.MySqlClient.PreparableStatement.ExecuteAsync(Boolean execAsync) at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken) at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken) at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken) at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQueryAsync(Boolean execAsync, CancellationToken cancellationToken) at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject) at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection) at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.c__DisplayClass0_0.b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) Fatal error encountered during command execution. [/code] Как решить эту проблему?
Я создал миграцию, чтобы добавить несколько таблиц и обновить одну таблицу (добавить один столбец).
Миграция завершилась успешно, но когда я запускаю обновление базы данных dotnet ef Я получаю эту ошибку, которую не могу найти в Интернете.
Для...
Я создал миграцию, чтобы добавить несколько таблиц и обновить одну таблицу (добавить один столбец). База данных — MySQL 8.0.31, а поставщик EF — MySql.EntityFrameworkCore от Oracle.
Миграция завершилась успешно, но когда я запускаю обновление базы...
Я в недоумении, что происходит с EF Core 7. Это не мой код и не моя база данных, поэтому никаких изменений в БД не допускается. Вот краткий код, который актуален:
public class Order
{
public string CompanyId {get; set; } = null!;
public string...
Я в страже, что происходит с EF Core 7. Это не мой код и не моя база данных, поэтому не разрешены изменение в базе данных. public class Order
{
public string CompanyId { get; set; } = null!;
public string ClientId { get; set; } = null!;
public int...
Я в страже, что происходит с EF Core 7. Это не мой код и не моя база данных, поэтому не разрешены изменение в базе данных. public class Order
{
public string CompanyId { get; set; } = null!;
public string ClientId { get; set; } = null!;
public int...