【问题标题】:Accessing NULL timestamp column with MySQL .NET Connector使用 MySQL .NET 连接器访问 NULL 时间戳列
【发布时间】:2013-08-15 11:57:13
【问题描述】:

我们正在使用 MySQL .NET 连接器 6.7.4 来访问使用 .NET 中的 Entity Framework 5.0 的 MySQL 数据库。升级到版本 6.7.4 后,我们开始遇到允许 NULL 的时间戳列的问题。我们可以毫无问题地保存值(即,列在数据库中正确更新),但是每当我们检索与数据库中的行对应的实体时,与该列对应的属性总是返回 null。我们试图改变 edmx 文件中列的精度,但这根本没有改变行为。有没有其他人遇到过这个问题?除了降级到旧版本的 MySQL .NET 连接器之外,是否有任何已知的解决方法?

【问题讨论】:

  • 你可以在命令行中尝试查询并告诉我你得到的结果是否相同吗?
  • 我不知道您在命令行中尝试查询的确切含义,但如果使用 MySQL Workbench 运行查询,则该列的时间戳不为空。
  • edmx 中的列映射到什么实体框架类型?
  • 可空

标签: c# mysql .net sql entity-framework


【解决方案1】:

您是否尝试将“转换零日期时间=真”添加到您的连接字符串? 这会将 0000-00-00 值转换为 DateTime.MinValue。

http://dev.mysql.com/doc/refman/5.5/en/connector-net-connection-options.htmlhttp://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-datetime.html

更多信息

【讨论】:

    【解决方案2】:

    如果使用 IFNULL 函数会发生什么?即

    SELECT IFNULL(mytimestamp,'0001-01-01 00:00:00') FROM mytable
    

    这应该返回一个不可为空且始终具有值的列。返回的值应该是 mytimestamp 列的值或“0001-01-01 00:00:00”(您的默认值)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 2019-09-28
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多