gpt4 book ai didi

ruby-on-rails - 未初始化的常量 ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError)

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:23 26 4
gpt4 key购买 nike

我在运行 Rails 服务器时遇到问题。我在初始化程序中设置了 abstract_mysql2_adapters,包括:

class ActiveRecord::ConnectionAdapters::Mysql2Adapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end

它解决了我的 rake db:migrate 问题,但是当我尝试运行我的 Rails 服务器时,它给了我这个错误。

C:/Users/XXXX/Documents/RoRCmS/simple_cms/config/initializers/abstract_mysql2_adapter.rb:2:in <class:Mysql2Adapter>': uninitialized constant ActiveRecord::ConnectionAda
pters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError)
from C:/Users/John/Documents/RoRCmS/simple_cms/config/initializers/abstract_mysql2_adapter.rb:1:in
' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/engine.rb:609:in block (2 levels) in <class:Engine>'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/engine.rb:608:in
each' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/engine.rb:608:in block in <class:Engine>'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:30:in
instance_exec' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:30:in run'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:55:in
block in run_initializers' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:228:in block in tsort_each'
from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:350:in
block (2 levels) in each_strongly_connected_component' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:431:in each_strongly_connected_component_from'
from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:349:in
block in each_strongly_connected_component' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:347:in each'
from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:347:in
call' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:347:in each_strongly_connected_component'
from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:226:in
tsort_each' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:205:in tsort_each'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:54:in
run_initializers' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/application.rb:215:in initialize!'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/railtie/configurable.rb:30:in
method_missing' from C:/Users/John/Documents/RoRCmS/simple_cms/config/environment.rb:5:in <top (required)>'
from C:/Users/John/Documents/RoRCmS/simple_cms/config.ru:3:in
require' from C:/Users/John/Documents/RoRCmS/simple_cms/config.ru:3:in block in <main>'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:55:in
instance_eval' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:55:in initialize'
from C:/Users/John/Documents/RoRCmS/simple_cms/config.ru:in
new' from C:/Users/John/Documents/RoRCmS/simple_cms/config.ru:in <main>'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:49:in
eval' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:49:in new_from_string'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:40:in
parse_file' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/server.rb:277:in build_app_and_options_from_config'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/server.rb:199:in
app' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/commands/server.rb:48:in app'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/server.rb:314:in
wrapped_app' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/commands/server.rb:75:in start'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/commands.rb:78:in
block in ' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in tap'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in
' from bin/rails:4:in require'
from bin/rails:4:in
'

我现在真的需要解决这个问题..谢谢你们。

最佳答案

我是这样解决的。使用 mysql -u username -p database_name < file.sql 将遗留 sql 转储文件导入 MySQL 后,我继续使用 bin/rake db:migrate 执行迁移, 但我遇到了错误 Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead .

所以我尝试了与您相同的猴子补丁,正如用户 pjg 在此处建议的那样 https://github.com/rails/rails/pull/13247#issuecomment-32425844 , 但后来我遇到了你的错误

uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError)

我听从了用户 John Geliberte 的建议并将我的 Gemfile 更新为 gem 'activerecord-native_db_types_override'并检查我是否也有 gem 'mysql2' (不是导致其他错误的'activerecord-mysql2-adapter')并运行bundle install .

我使用了与 activerecord-native_db_types_override gem 相关的文档并为 Rails ActiveRecord library file 中提到的 NATIVE_DATABASE_TYPES 应用了属性对于 abstract_mysql_adapter,我做了以下更改:

我创建了 config/initializers/abstract_mysql2_adapter.rb 并添加了:

require 'active_record/connection_adapters/mysql2_adapter'
NativeDbTypesOverride.configure({
ActiveRecord::ConnectionAdapters::Mysql2Adapter => {
primary_key: "int(11) auto_increment PRIMARY KEY"
}
})

我创建了 config/environment.rb 并添加以下内容来加载猴子补丁:

require File.expand_path('../initializers/abstract_mysql2_adapter.rb', __FILE__)

我检查了 config/database.yml 是否包含我想使用的数据库连接的“适配器:mysql2”。

然后我跑了bin/rake db:migrate并且它成功执行了迁移。

我做了一个pull request到 ActiveRecord Native Database Types Override Gem 的文档。

不过,从 MySQL 5.7 降级到 5.5 要容易得多。

我的系统:

  • mysql -Vmysql Ver 14.14 Distrib 5.7.13
  • rails -v4.2.4
  • ruby -vruby 2.3.0p0

关于ruby-on-rails - 未初始化的常量 ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37315546/

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