weixin_42298206 2009-03-26 23:14
浏览 357
已采纳

rake db:migrate 不能正确执行

数据库连接应该没有问题.
因为可以在mysql的数据库中建立
schema_migrations表

数据库创建的代码很简单.
def self.up
create_table :subjects do |t|
t.columns :title, :string
t.columns :description, :text
end
end

执行rake db:migrate 以后会报告错误.

== CreateSubjects: migrating ========================
-- create_table(:subjects)
rake aborted!
An error has occurred, all later migrations canceled:

因为刚用ruby,不是很熟悉,加上--trace以后,也看不出来具体是什么问题.
rake是0.8.4的版本.
rails是2.3.2
ruby是1.8.6
gem是1.3.1
mysql 是5.1.32的64位版本,我是在windows 2008上用netbeans开发的.

请熟悉的人给解答一下可能的问题,或者是能查找原因的方法,谢谢
[b]问题补充:[/b]
1.执行了上面这位提供的脚本,测试数据库连接没有问题的。

2.下面大家帮我看看trace的信息吧。
E:\Dev\DynamicTraining>rake db:migrate --trace
(in E:/Dev/DynamicTraining)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
== CreateSubjects: migrating =================================================
-- create_table(:subjects)
rake aborted!
An error has occurred, all later migrations canceled:

wrong number of arguments (2 for 0)
./db/migrate//20090326160428_create_subjects.rb:4:in columns'
./db/migrate//20090326160428_create_subjects.rb:4:in
up_without_benchmarks'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_a
dapters/abstract/schema_statements.rb:104:in create_table'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_a
dapters/mysql_adapter.rb:473:in
create_table'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:352:in send'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:352:in
method_missing'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:328:in say_with_time'
D:/ruby/lib/ruby/1.8/benchmark.rb:293:in
measure'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:328:in say_with_time'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:348:in
method_missing'
./db/migrate//20090326160428_create_subjects.rb:3:in up_without_benchmarks'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:282:in
send'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:282:in migrate'
D:/ruby/lib/ruby/1.8/benchmark.rb:293:in
measure'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:282:in migrate'
(__DELEGATION__):2:in
__send__'
(__DELEGATION__):2:in migrate'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:486:in
migrate'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:562:in call'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:562:in
ddl_transaction'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:485:in migrate'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:472:in
each'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:472:in migrate'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:400:in
up'
D:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb
:383:in migrate'
D:/ruby/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/tasks/databases.rake:116
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:617:in
call'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:617:in execute'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:612:in
each'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:612:in execute'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:578:in
invoke_with_call_c
hain'
D:/ruby/lib/ruby/1.8/monitor.rb:242:in synchronize'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:571:in
invoke_with_call_c
hain'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:564:in invoke'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2027:in
invoke_task'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in top_level'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in
each'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in top_level'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2044:in
standard_exceptio
n_handling'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1999:in top_level'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1977:in
run'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2044:in standard_exceptio
n_handling'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1974:in
run'
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/bin/rake:31
D:/ruby/bin/rake:16:in `load'
D:/ruby/bin/rake:16

谢谢

[b]问题补充:[/b]

我已经按照您的提示,将columns的s去掉了.因为我是用的netbeans,它自动给补充的是columns,我没有注意后面还有一个方法.

目前已经完全正确了,非常感谢.

  • 写回答

4条回答 默认 最新

  • horace_lee 2009-03-27 23:29
    关注

    仔细考虑之后发现:
    [code="ruby"] def self.up
    create_table :subjects do |t|
    t.columns :title, :string
    t.columns :description, :text
    end
    end [/code]

    t.column[color=red]s[/color]
    不应该有s

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能