2011-05-17 161 views
4

現在我將rails 3.0.7升級到rails 3.1 pre版本。當我創建一個示例項目時,它工作正常。創建腳手架後,我嘗試遷移,但它讓我耙子中止!信息。Rails 3.1 pre遷移問題

這裏我的代碼

rails g scaffold product name:string price:decimal category:string 
     invoke active_record 
     create db/migrate/20110517090853_create_products.rb 
     create app/models/product.rb 
     invoke test_unit 
     create  test/unit/product_test.rb 
     create  test/fixtures/products.yml 
     route resources :products 
     invoke scaffold_controller 
     create app/controllers/products_controller.rb 
     invoke erb 
     create  app/views/products 
     create  app/views/products/index.html.erb 
     create  app/views/products/edit.html.erb 
     create  app/views/products/show.html.erb 
     create  app/views/products/new.html.erb 
     create  app/views/products/_form.html.erb 
     invoke test_unit 
     create  test/functional/products_controller_test.rb 
     invoke helper 
     create  app/helpers/products_helper.rb 
     invoke  test_unit 
     create  test/unit/helpers/products_helper_test.rb 
     create app/assets/stylesheets/scaffold.css.scss 
     invoke assets 
     create app/assets/javascripts/products.js.coffee 
     create app/assets/stylesheets/products.css.scss 
rake db:migrate 
== CreateProducts: migrating ================================================= 
-- create_table(:products) 
    -> 0.0053s 
== CreateProducts: migrated (0.0054s) ======================================== 

rake aborted! 
An error has occurred, all later migrations canceled: 

undefined method `rows' for nil:NilClass 

(See full trace by running task with --trace) 

我使用Ruby 1.9.2和XAMPP。

任何人都可以知道是什麼問題?

+0

我見過別人抱怨這一點,但沒有能夠複製它。你使用的是什麼版本的Ruby?在1.8.7和1.9.2上適合我。 – 2011-05-17 10:27:44

+0

當你運行'rake db:migrate --trace'時,它指向什麼? – sscirrus 2011-05-17 10:28:34

+0

是否適合您的較低版本的導軌? – corroded 2011-05-22 18:51:28

回答

6

我有同樣的問題使用mysql2 v0.2.6作爲數據庫適配器。
我試着解決它更新mysql2到最新版本0.3.2,但我無法編譯在Windows上的這個寶石。 但我仍然相信最新版本的mysql2可能會起作用。 目前我使用「PG」寶石作爲Postgres的適配器,DB,它工作正常使用Rails 3.1.pre

0

我只是碰到了這個問題,我的Windows 7計算機上,並能解決這個問題,這要歸功於http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html。我已經安裝的devkit,這就是爲我做:

gem install mysql2 -- '--with-mysql-lib="c:\Program Files\MySQL\MySQL Server 5.1\lib\opt" --with-mysql-include="c:\Program Files\MySQL\MySQL Server 5.1\include"' 

MySQL的適配器的安裝此版本0.3.7的話,我是能夠成功運行我的遷移。

3

這對我有效。我更改Gemfile使用github回購:

gem 'mysql2', :git => 'git://github.com/brianmario/mysql2.git' 

然後運行捆綁安裝。我仍然在這之後得到一個錯誤約libmysqlclient.18.dylib是缺失,這是我通過運行固定的(你的路徑可能會有所不同):

install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.9.2-p180/bundler/gems/mysql2-a1ddafaf8b31/lib/mysql2/mysql2.bundle