我在生产服务器上部署时遇到此错误。 我在临时服务器中执行了相同的 ruby 迁移文件,它可以工作,但在生产版本中出现错误,例如,
01 /usr/local/rvm/bin/rvm 3.2.0 do bundle exec rake db:migrate
01 DEPRECATION WARNING: axlsx_rails has been renamed to caxlsx_rails. See http://github.com/caxlsx
01 /var/www/new_zdm/shared/bundle/ruby/3.2.0/gems/activerecord-sqlserver-adapter-7.0.2.0/lib/active_record/connection_adapters/sqlserver_adapter.rb:111: warning: unde…
01 == 20230621013249 CreateTenpoContractDetails: migrating =======================
01 -- create_table(:tenpo_contract_details)
01 rake aborted!
01 StandardError: An error has occurred, this and all later migrations canceled:
01
01 TinyTds::Error: Column, parameter, or variable #6: Cannot specify a column width on data type datetime.`
` 我在迁移中没有指定任何宽度参数。 我正在分享迁移文件的示例文件
class CreateTenpoContractDetails < ActiveRecord::Migration[7.0]
def change
create_table :tenpo_contract_details do |t|
t.string :payment_payee
t.datetime :tenpo_start_date
t.datetime :tenpo_end_date
t.datetime :next_yoyaku_date
t.datetime :tenpo_open_date
t.datetime :tenpo_agreement_date
t.datetime :contract_expiration_date
t.datetime :contract_start_period
t.datetime :contract_end_period
t.integer :total_contract_period
t.integer :revise_number_of_year
t.datetime :condition_revision_schedule_date
t.timestamps
end
end
end
有人可以帮助我吗?
我搜索了很多有关类似问题的链接,但没有得到解决方案。
Ruby版本:3.2.0 Rails 版本:7
最近经历了类似的事情,发现我可以通过指定该行中的
precision
来解决它,例如
...
t.datetime :tenpo_agreement_date, precision: 6
...
如果您的数据库不支持精度,该值也可以是
nil
。
https://guides.rubyonrails.org/active_record_migrations.html#column-modifiers