Rake db: ошибка переноса mysql

#mysql #ruby-on-rails #ruby-on-rails-3 #rake

#mysql #ruby-on-rails #ruby-on-rails-3 #грабли

Вопрос:

Я новичок в ROR. Я просто следил за учебными пособиями в tutorials point. Я установил следующие драгоценные камни:

 abstract (1.0.0)  
actionmailer (3.0.3)  
actionpack (3.0.3)  
activemodel (3.0.3)  
activerecord (3.0.3)  
activerecord-mysql-adapter-flags (0.0.3)  
activerecord-ruby_mysql-adapter (0.1)  
activeresource (3.0.3)  
activesupport (3.0.3)  
arel (2.0.6)  
bigdecimal (1.1.0)  
builder (2.1.2)  
bundler (1.3.5)  
erubis (2.6.6)  
i18n (0.4.2)  
io-console (0.3)  
json (1.5.5)  
mail (2.2.14)  
mime-types (1.16)  
minitest (2.5.1)  
mysql (2.8.1 x86-mingw32)  
polyglot (0.3.1)  
rack (1.2.1)  
rack-mount (0.6.13)  
rack-test (0.5.6)  
rails (3.0.3)  
railties (3.0.3)  
rake (0.9.2.2)  
rdoc (3.9.5)   
thor (0.14.6)  
treetop (1.4.9)  
tzinfo (0.3.23)  
 

Когда я попытался запустить rake db:create его, он выдал мне следующие предупреждения, но все равно создал базы данных.

 F:Rails ApplicationsLibrary>rake db:create
WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/tas
k' (in RDoc 2.4.2 )' instead.
    at C:/Ruby193/lib/ruby/1.9.1/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated.  Please include
    ...  Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method Library::Application#task called at C:/Ruby193/lib/ruby/gems
/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'
 

и в конце длинного вывода говорилось:

 [NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html


This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
 

Но он создал базы данных с именами library_development и library_testing в mysql.

Теперь, когда я запускаю rake db: migrate, в нем говорится следующее:

  F:Rails ApplicationsLibrary>rake db:migrate
WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/tas
k' (in RDoc 2.4.2 )' instead.
    at C:/Ruby193/lib/ruby/1.9.1/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated.  Please include
    ...  Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method Library::Application#task called at C:/Ruby193/lib/ruby/gems
/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'
rake aborted!
Mysql::Error: query: not connected: CREATE TABLE `schema_migrations` (`version`
varchar(255) NOT NULL) ENGINE=InnoDB
 

файл gemfile выглядит следующим образом

 source 'http://rubygems.org'

gem 'rails', '3.0.3'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

#gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'mysql', '~>2.8.1'
gem 'activerecord-ruby_mysql-adapter', '~>0.1' 
gem 'rdoc'
# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger (ruby-debug for Ruby 1.8.7 , ruby-debug19 for Ruby 1.9.2 )
# gem 'ruby-debug'
# gem 'ruby-debug19'

# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'

# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
#   gem 'webrat'
# end
 

Кто-нибудь может мне помочь???

Комментарии:

1. Вы пробовали запускать bundle exec rake db:create ? Возможно, просто запущена неправильная версия rake.

2. Вы видели это matthew.mceachen.us/blog /…

3. @bundacia нет, он выдает такое же предупреждение и ошибку

Ответ №1:

Rails 3.0.3 довольно старый. Последняя ветка 3.x находится на 3.2.18 или новее. Я подозреваю, что вы можете использовать более новый gem с версией Rails, которая слишком стара для ее работы. Если вы опубликуете свой Gemfile как gist, будет легче определить, какие драгоценные камни могут быть проблематичными.

Обычно в таком случае неограниченные драгоценные камни, т. Е. Те, у которых нет явной версии, установленной в файле Gemfile, будут пытаться использовать более новую версию драгоценного камня, чем версия, которую может поддерживать Rails, и сломает приложение.

Обновление: добавленный вами Gemfile содержит только один неограниченный gem: rdoc. Похоже, что этот драгоценный камень использует более старый способ интеграции задач и поэтому может быть связан с более новой версией rake. Мы скорректируем обе версии rake и версию rdoc, чтобы они соответствовали периоду времени, из которого исходил rails 3.0.3.

Версия rdoc, которая была выпущена ближе всего к rails 3.0.3, — 3.0.1. Измените свой Gemfile так, чтобы вместо

 gem 'rdoc'
 

в нем говорится

 gem 'rdoc', '~> 3.0.1'
 

Затем выполните следующие команды, чтобы установить версию rake, наиболее близкую к rails 3.0.3

 gem uninstall rake --version 0.9.2.2
gem install rake --version 0.8.7
 

Теперь запустите bundler, чтобы установить запрошенную вами версию rdoc:

 bundle install
 

И, наконец, используйте bundler для выполнения вашей команды rake, используя конкретные версии драгоценных камней, которые вы просили использовать в Gemfile:

 bundle exec rake db:create
bundle exec rake db:migrate
 

Если это не решит проблему, вы всегда можете принудительно использовать конкретную версию rake, которую вы хотите использовать, например:

 bundle exec rake _0.8.7_ db:create
 

Надеюсь, это поможет.

Комментарии:

1. но rake db: create создает базы данных в mysql. Я отправляю gemfile.

2. да, я решил это. Я только что заменил libmysql.dll с более старой версией в папке ruby / bin.спасибо