我在rails 3.2.9和ruby versiion 2.0.0中创建了一个演示应用程序。在搭建博客模型之后,我尝试迁移它,但是有以下问题。
rake :迁移====================================================:== CreateBlogs:迁移 -- create_table(:blogs) rake流产了! StandardError:发生了一个错误,所有以后的迁移都取消了: Mysql2 2::Error:主键的所有部分必须为非空;如果键中需要NULL,则使用UNIQUE : CREATE
blogs(idint(11)默认空auto_increment主键、titlevarchar(255)、descriptiontext、created_atdatetime NULL ),( /usr/local/rvm/gems/ruby-2.0.0-p648@demo-app/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in‘/usr/local/rvm/gems/ruby-2.0.0-p648@demo-app/gems/activerecord-中的updated_at日期时间NULL) ENGINE=InnoDB ENGINE=InnoDBquery' /usr/local/rvm/gems/ruby-2.0.0-p648@demo-app/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in块
……
……
……
-3.2.9/lib/active_record/迁移.db:551:在“/usr/local/rvm/gems/ruby-2.0.0-p648@demo-app/gems/rake-11.3.0/exe/rake:27:in `”任务中的
migrate' /usr/local/rvm/gems/ruby-2.0.0-p648@demo-app/gems/activerecord-3.2.9/lib/active_record/railties/databases.rake:179:in块中(2个级别):TOP => db:=>迁移(参见通过使用-- trace运行任务来完成跟踪)
发布于 2016-11-23 07:36:39
添加此初始化程序以修复此问题:
config/initializers/abstract_mysql2_adapter.rb
require 'active_record/connection_adapters/mysql2_adapter'
class ActiveRecord::ConnectionAdapters::Mysql2Adapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end发布于 2020-01-22 07:50:46
我也遇到了这个问题(mysql 0.3.21和Rails 3.2.22.5)。我通过在我的应用程序config/initializers/mysql2_adapter.rb中添加一个文件(因为以前没有这样的文件)来修正它,其内容如下:
require 'active_record/connection_adapters/mysql2_adapter'
class ActiveRecord::ConnectionAdapters::Mysql2Adapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end然后,在我的environment.rb文件中,我添加了以下内容:
require File.expand_path('../initializers/mysql2_adapter', __FILE__)发布于 2019-11-08 10:22:01
使用主键列定义 null时发生此错误。
即使您定义了任何组合键,那么这些列定义也不包含not null条件。
搜索那些列,删除 null条件,这是删除错误的解决方案之一。
https://stackoverflow.com/questions/40758226
复制相似问题