2013-03-25 10 views
5

Quando provo a farerastrello metodo non definito `campi per nil: NilClass su seme di database

rake db:reset 

o

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

ho casualmente ottenere un NoMethodError: undefined method 'fields' for nil:NilClass quando si verifica il seme. Eccone uno:

[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)) 

Ecco un altro:

[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 

Io davvero non capisco dove questo può essere provenienti da. A volte non ho nemmeno un errore e tutto è perfettamente inserito. Dopo alcuni test sembra che dipenda dalla velocità di inserimento. Se eseguo questo dal mio server di sviluppo, ha quasi sempre successo. Se eseguo questo in modo remoto dal mio computer, quasi sempre fallisce.

Sto usando Ruby 1.9.3 localmente e ruby ​​2 sul mio server di sviluppo. Su entrambi sto usando rails4 (edge) e il mio driver è postgresql (pg, nessuna versione specificata)

risposta

12

Sto riscontrando questo problema anche su rails4 (edge) e postgres. Ci sto imbattendo in un solr: reindex, quindi non penso che sia necessariamente correlato agli inserimenti in alcun modo. Aggiornerò questo quando capirò che cosa sta andando storto.

Modifica: Prova ad aggiornare a rotaie revisione 1a838ccda4a31bb023985f6c977e6bc3e238cda9, ha risolto il mio problema.

Questa è la questione GitHub su di esso: https://github.com/rails/rails/issues/9710

ho trovato che dopo una rapida git bisect. È definitivamente risolto in git ora.

+0

Generalmente si dovrebbe aggiungere questo come commento. Vedendo questo è il tuo primo post, lo inviterò in modo tale da ottenere la possibilità di aggiungere commenti. Benvenuto su Stackoverflow! MrGreen –

+0

Ah, grazie per il testa a testa. Bello sapere l'etichetta. Per quanto riguarda il problema, sono stato in grado di ricreare il bug su un progetto di test usando (1..10000) .each {Foobar.first}, sulla stessa revisione che il mio progetto stava usando. Ho aggiornato il mio progetto di test alla revisione 1a838ccda4a31bb023985f6c977e6bc3e238cda9 e il problema è andato via. Sono fiducioso quando aggiorno il mio progetto alla stessa revisione il problema dovrebbe essere risolto. –

+0

Davvero! L'ultimo aggiornamento sembra aver risolto questo problema. – Crystark