我们使用的是:
gem 'sinatra', '~> 2.0.0'
gem 'activerecord', '~> 5.1.1'
gem 'sinatra-activerecord', '~> 2.0.13'问题是,对于ActiveRecord 5,我们不能通过迁移:
rake aborted!
ActiveRecord::NotNullViolation: Mysql2::Error: Field 'created_at' doesn't have a default value: INSERT INTO `ar_internal_metadata` (`key`, `value`) VALUES ('environment', 'default_env')
/home/alex/.rbenv/versions/2.3.0/bin/ruby_executable_hooks:15:in `eval'
/home/alex/.rbenv/versions/2.3.0/bin/ruby_executable_hooks:15:in `<main>'
Mysql2::Error: Field 'created_at' doesn't have a default value
/home/alex/.rbenv/versions/2.3.0/bin/ruby_executable_hooks:15:in `eval'
/home/alex/.rbenv/versions/2.3.0/bin/ruby_executable_hooks:15:in `<main>'AR5添加了一个名为ar_internal_metadata的新表,以防止生产中的破坏性rake:http://blog.bigbinary.com/2016/06/07/rails-5-prevents-destructive-action-on-production-db.html
正如您在logs中看到的,值正在接收Null,并引发执行迁移挂起。
我们已尝试添加此ENV_VARS,但未添加任何内容:DISABLE_DATABASE_ENVIRONMENT_CHECK=1
有人能帮我们吗?
发布于 2017-05-17 21:14:21
将具有:null => false的db列更改为:null=> true。
发生这种情况的原因是因为较新版本的MySql默认情况下会打开“严格模式”。任何包含:null=> false的列都需要用某种类型的数据填充该列。看起来你的是空的,所以你得到了一个错误。
https://stackoverflow.com/questions/44025165
复制相似问题