2013-03-25 66 views
5

当我尝试做耙未定义的方法`领域的零:NilClass数据库种子

rake db:reset 

rake db:drop 
rake db:create 
rake db:schema:load 
rake db:seed 

当种子时我随机得到一个NoMethodError: undefined method 'fields' for nil:NilClass。 这里有一个:

[1m[35m (186.0ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20130318105449') 
[1m[36m (187.0ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20130319154146')[0m 
[1m[35m (189.0ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20130322132730') 
[1m[36m (104.0ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20130322142814')[0m 
NoMethodError: undefined method `fields' for nil:NilClass:    SELECT COUNT(*) 
      FROM pg_class c 
      LEFT JOIN pg_namespace n ON n.oid = c.relnamespace 
      WHERE c.relkind in ('v','r') 
      AND c.relname = 'schema_migrations' 
      AND n.nspname = ANY (current_schemas(false)) 

这里有一个另外一个:

[1m[35m (39.0ms)[0m BEGIN 
[1m[36mCategory Exists (107.0ms)[0m [1mSELECT 1 AS one FROM "categories" WHERE "categories"."hash" = 'cat1' LIMIT 1[0m 
[1m[35mSQL (124.0ms)[0m INSERT INTO "categories" ("category_id", "created_at", "label", "hash", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["category_id", 58], ["created_at", Mon, 25 Mar 2013 15:07:53 CET +01:00], ["label", "Cat1"], ["hash", "cat1"], ["updated_at", Mon, 25 Mar 2013 15:07:53 CET +01:00]] 
[1m[36m (117.0ms)[0m [1mCOMMIT[0m 
[1m[35m (162.0ms)[0m BEGIN 
[1m[36mCategory Exists (136.0ms)[0m [1mSELECT 1 AS one FROM "categories" WHERE "categories"."hash" = 'cat2' LIMIT 1[0m 
[1m[35mSQL (104.0ms)[0m INSERT INTO "categories" ("created_at", "label", "hash", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["created_at", Mon, 25 Mar 2013 15:07:53 CET +01:00], ["label", "Cat2"], ["hash", "cat2"], ["updated_at", Mon, 25 Mar 2013 15:07:53 CET +01:00]] 
[1m[36m (99.0ms)[0m [1mCOMMIT[0m 
[1m[35m (108.0ms)[0m BEGIN 
[1m[36mCategory Exists (173.0ms)[0m [1mSELECT 1 AS one FROM "categories" WHERE "categories"."hash" = 'cat3' LIMIT 1[0m 
NoMethodError: undefined method `fields' for nil:NilClass: SELECT 1 AS one FROM "categories" WHERE "categories"."hash" = 'cat3' LIMIT 1 

我真的不明白的地方这可以从到来。有时我甚至没有错误,一切都完美插入。 做了一些测试后,它似乎取决于插入的速度。如果我从我的开发服务器执行它,它几乎总是成功。如果我从计算机执行这个远程操作,它几乎总是失败。

我在本地开发服务器上使用ruby 1.9.3和ruby 2。在两个我使用rails4(边缘)和我的驱动程序是postgresql(pg,没有指定版本)

回答

12

我遇到了这个问题以及rails4(edge)和postgres。我在solr:reindex上遇到它,所以我不认为它以任何方式与插入有关。当我弄清楚什么是错误的时候,我会更新它。

编辑: 尝试更新到rails修订版1a838ccda4a31bb023985f6c977e6bc3e238cda9,它解决了我的问题。

这是它GitHub的问题:https://github.com/rails/rails/issues/9710

我发现这是一个快速的git平分之后。现在肯定已经在git中修复了。

+0

通常您会将此添加为评论。看到这是你的第一篇文章,我会赶上它,所以你会获得添加评论的能力。欢迎来到Stackoverflow! :-D – 2013-03-25 21:46:56

+0

啊,谢谢你的抬头。很高兴知道礼节。 就问题而言,我能够使用(1..10000).each {Foobar.first}在与我的项目相同的修订版本上重新创建测试项目中的错误。 我将我的测试项目更新至修订版1a838ccda4a31bb023985f6c977e6bc3e238cda9,问题就消失了。我相信,一旦我将我的项目更新到同一修订版,问题应该得到解决。 – 2013-03-25 22:29:11

+0

确实!上次更新似乎解决了这个问题。 – Crystark 2013-03-26 08:53:30

相关问题