2010-09-22 25 views
23

Chỉ cần tạo ra một ứng dụng blog mới bằng đường ray 3.0Không thể chuyển đổi Fixnum chuỗi trong rake db: tạo

mô hình của tôi rất đơn giản:

class Post < ActiveRecord::Base 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :post 
end 

tôi đã sử dụng các lệnh: đường ray tạo tiêu đề bài giàn giáo : chuỗi nội dung: văn bản, v.v.

để tạo các tệp này.

Bây giờ tôi muốn tạo ra db sử dụng:

rake db: tạo

Tôi đã nhận lỗi:

rake aborted! 
can't convert Fixnum into String 

ý tưởng Bất kỳ những gì vấn đề này có thể được?

Tôi đang theo hướng dẫn này: http://sixrevisions.com/web-development/how-to-create-a-blog-from-scratch-using-ruby-on-rails/

Đây là dấu vết:

** Invoke db:create (first_time) 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
** Execute db:create 
rake aborted! 
can't convert Fixnum into String 
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.4/lib/mysql2/client.rb:36:in `connect' 
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.4/lib/mysql2/client.rb:36:in `initialize' 
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.4/lib/active_record/connection_adapters/mysql2_adapter.rb:14:in `new' 
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.4/lib/active_record/connection_adapters/mysql2_adapter.rb:14:in `mysql2_connection' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:230:in `send' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:230:in `new_connection' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:238:in `checkout_new_connection' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:194:in `checkout' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in `loop' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in `checkout' 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:189:in `checkout' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `connection' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:318:in `retrieve_connection' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:97:in `retrieve_connection' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:89:in `connection' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/railties/databases.rake:68:in `create_database' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0/lib/active_record/railties/databases.rake:33 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain' 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run' 
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/bin/rake:31 
/usr/bin/rake:19:in `load' 
/usr/bin/rake:19 

database.yaml:

# MySQL. Versions 4.1 and 5.0 are recommended. 
# 
# Install the MySQL driver: 
# gem install mysql2 
# 
# And be sure to use new-style password hashing: 
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html 
development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: myblog_development 
    pool: 5 
    username: root 
    password: 123 
    socket: /tmp/mysql.sock 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: myblog_test 
    pool: 5 
    username: root 
    password: 123 
    socket: /tmp/mysql.sock 

production: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: myblog_production 
    pool: 5 
    username: root 
    password: 123 
    socket: /tmp/mysql.sock 

di cư:

class CreatePosts < ActiveRecord::Migration 
    def self.up 
    create_table :posts do |t| 
     t.string :title 
     t.text :body 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :posts 
    end 
end 

di cư tiếp theo:

class CreateComments < ActiveRecord::Migration 
    def self.up 
    create_table :comments do |t| 
     t.string :name 
     t.text :body 
     t.references :post 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :comments 
    end 
end 
+0

Có một vết lùi? – Matchu

+0

@matchu được cập nhật với đầu ra --trace. – Blankman

+3

CSDL và di chuyển của bạn trông như thế nào? – sosborn

Trả lời

68

Các YAML phân tích cú pháp có để đoán biết kiểu dữ liệu mỗi giá trị trong tập tin database.yml của bạn, mà không cần bất kỳ thông tin theo ngữ cảnh khác.

Như vậy, nó có thể coi giá trị password của 123 là số nguyên.

Đang cố gắng buộc diễn giải một chuỗi:

password: "123" 
+1

tôi đã nghĩ về điều đó, nhưng tại sao tên người dùng lại hoạt động? nó giả định chuỗi? Tôi sẽ cố gắng sửa chữa tối nay nhờ! – Blankman

+1

Trình phân tích cú pháp YAML đoán được loại dữ liệu nào, dựa trên hình thức của nó. Vì vậy, vâng, vì 'root' không thể là bất kỳ kiểu dữ liệu nào khác, nó giả định chuỗi. – Matchu

+2

CẢM ƠN BẠN! Điều này khiến tôi phát điên. Bạn đã làm cho tôi lành mạnh trở lại :-) –

Các vấn đề liên quan