gpt4 book ai didi

mysql - 防止 Rails 4 迁移将时间戳更改为日期时间?

转载 作者:行者123 更新时间:2023-11-29 01:30:00 26 4
gpt4 key购买 nike

我通过从现有数据库中提取 Rails 模式来创建它。所以现在我想迁移那个模式,这样我就可以在测试数据库上复制我的表。然而,即使我的模式和迁移文件有带有时间戳属性的表

例如

t.timestamp "column_name", limit: 6,

当我做的时候

rake db:migrate RAILS_ENV=test

时间戳列在 sql 中被更改:

`column_name` datetime(6)

我不想将列类型更改为日期时间,并且我意识到对日期时间设置限制是 mysql 中的一个错误。有没有一种方法可以强制 Rails 使用时间戳进行迁移?

最佳答案

嗯,就 ActiveRecord 而言,timestamps == datetime。因此,当您调用 t.timestamp 时,它会创建一个类型为 datetime 的列。 AR 似乎没有使用 MYSQL 的 TIMESTAMP 数据类型。 here is the relavent source .

  def add_timestamps(table_name)
add_column table_name, :created_at, :datetime
add_column table_name, :updated_at, :datetime
end

正如您在上面可能注意到的,rails 使用 datetime 数据类型而不是时间戳创建了两列。所以您将像这样明确指定列类型:

t.column, :timestamp, "column_name", limit: 6

关于mysql - 防止 Rails 4 迁移将时间戳更改为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com