在微秒中声明时间戳等于Ecto / Phoenix中的mysql数据库值

哈里格

我一直在玩Elixir Phoenix,并进行了一个简单的集成测试,该测试可以检查模型的json响应是否与该模型的json呈现形式相同。

测试看起来像这样:

test "#show renders a single link" do
    conn = get_authenticated_conn()
    link = insert(:link)

    conn = get conn, link_path(conn, :show, link)

    assert json_response(conn, 200) == render_json(LinkView, "show.json", link: link)
end

过去效果不错,但是最近一次mix deps.update测试由于模型时间戳的精度问题而被打破。这是测试的输出:

Assertion with == failed
     code: json_response(conn, 200) == render_json(LinkView, "show.json", link: link)
     lhs:  %{"id" => 10, "title" => "A handy site to find stuff on the internet", "url" => "http://google.com", "inserted_at" => "2017-01-09T19:27:57.000000", "updated_at" => "2017-01-09T19:27:57.000000"}
     rhs:  %{"id" => 10, "title" => "A handy site to find stuff on the internet", "url" => "http://google.com", "inserted_at" => "2017-01-09T19:27:56.606085", "updated_at" => "2017-01-09T19:27:56.606093"}

我们可以看到,与模型的json呈现相比,控制器给出的响应的时间戳不匹配。这是因为MySQL数据库(5.7)将微秒向下舍入为0,而内存中的Ecto模型表示支持更高的精度。我的迁移仅使用Ecto的timestamps功能。

通过这些测试的最佳方法是什么?我并不特别关心时间戳的微秒精度,但显然Ecto在最近的更新中使其精度更高。我觉得MariaEx可能有问题,但不确定如何解决。

多伯特

Ecto v2.1 CHANGELOG中所述,要获得不保留usec自动时间戳的旧行为(就像直到Ecto <v2.1一样),可以schema在相关模型中的调用之前添加以下模块属性( s):

@timestamps_opts [usec: false]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用数据库中的值正确声明时间吗?

来自分类Dev

mysql检查mysql数据库中的值失败?

来自分类Dev

python中的微秒准确时间戳?

来自分类Dev

如何从数据库中声明一个保存时间戳值的变量?

来自分类Dev

从mysql数据库中获取时间戳值返回当前日期

来自分类Dev

如何在mysql数据库中更新时间戳?

来自分类Dev

在MySQL数据库的两列中拆分float值

来自分类Dev

防止数据库中的重复值-MySQL

来自分类Dev

在MySQL数据库的两列中拆分float值

来自分类Dev

从MySQL数据库中获取特定值

来自分类Dev

使用mySQL数据库中的值或“ 0”填充月份

来自分类Dev

使用Python在Mysql数据库中插入值

来自分类Dev

比较php中的mysql数据库表值

来自分类Dev

使用数据库MySQL中的值填充新列

来自分类Dev

使用单选按钮增加MySql数据库中的值

来自分类Dev

MySQL Query不更新PHP数据库中的值

来自分类Dev

倒数mysql数据库中的字段值

来自分类Dev

在MySQL数据库的两列中拆分float值

来自分类Dev

同时显示多个MySql数据库字段中的值

来自分类Dev

从MySQL数据库中获取特定值

来自分类Dev

使用mySQL数据库中的值或'0'填充月份

来自分类Dev

显示MySQL数据库中的唯一值

来自分类Dev

将API中的多个值插入mysql数据库

来自分类Dev

在android中读取mysql数据库返回空值

来自分类Dev

过滤MYSQL数据库中的聚合值II

来自分类Dev

无法使用php更新mysql数据库中的值

来自分类Dev

Android 值未插入我的 mysql 数据库中

来自分类Dev

更新数据库中的数据值

来自分类Dev

从 MySQL 数据库中获取表名,其中列名就像 X 值等于 Y