【问题标题】:Mysql update-database System.FormatExceptionMysql 更新数据库 System.FormatException
【发布时间】:2019-07-24 12:24:33
【问题描述】:

我在尝试将更新数据库迁移功能与 EntityFramework 一起使用时收到错误消息。我经常使用这个功能没有问题。 这是我的 2 个问题课程:

public class Produit
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int Upc { get; set; }

    public int? BinId { get; set; }
    [ForeignKey("BinId")]
    public Bin Bin { get; set; }

}

public class Bin
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int NoBin { get; set; }
    public virtual ICollection<Produit> Produits { get; set; }
}

错误:

    PM> update-database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201907231929105_Initial].
Applying explicit migration: 201907231929105_Initial.
System.FormatException: Input string was not in a correct format.
   at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
   at System.Convert.ToDouble(String value)
   at MySql.Data.EntityFramework.MySqlMigrationSqlGenerator.Generate(CreateIndexOperation op)
   at MySql.Data.EntityFramework.MySqlMigrationSqlGenerator.<.ctor>b__22_4(MigrationOperation op)
   at MySql.Data.EntityFramework.MySqlMigrationSqlGenerator.Generate(IEnumerable`1 migrationOperations, String providerManifestToken)
   at System.Data.Entity.Migrations.DbMigrator.GenerateStatements(IList`1 operations, String migrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.GenerateStatements(IList`1 operations, String migrationId)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable`1 operations, IEnumerable`1 systemOperations, Boolean downgrading, Boolean auto)
   at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse.<Update>b__d()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
Input string was not in a correct format.

启用迁移有效,添加迁移也有效。

我使用以下软件包: MySql.Data.EntityFramework (8.0.17.0) MySql.Data (8.0.17.0)

【问题讨论】:

  • 错误中建议你“指定'-Verbose'标志”的那部分......你应该这样做。
  • -详细,我试过了,但没有帮助我......但是谢谢
  • 但是您会在错误日志中获得更多信息,是吗?
  • 我得到的唯一信息是与数据库的连接正常。

标签: c# mysql entity-framework


【解决方案1】:

这看起来与 MySql.Data.EntityFramework 中的 bug 92561 相同,这是由于在非美国英语语言环境中运行造成的。

作为一种解决方法,您可以尝试将计算机的区域设置切换为美国英语以运行迁移。

或者,尝试切换到Pomelo.EntityFrameworkCore.MySql,这是 EF Core for MySQL 的 OSS 实现;很多人报告说它比 Oracle 的版本少错误。

【讨论】:

  • 谢谢!!我把我的电脑变成了美国英语,一切都很完美。不知道为什么之前没有发现Mysql的bug。
猜你喜欢
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 2013-03-05
  • 2013-08-04
  • 2018-03-24
  • 1970-01-01
相关资源
最近更新 更多