"PG :: UndefinedTable: ERREUR: la relation n'existe pas" avec un nom et une convention Rails corrects
J'ai lu beaucoup de potsts comme ça, mais toutes les solutions que j'ai vu sont dans la nomenclature des modèles, la dénomination et la convention Rails.
Maintenant, j'ai ce problème quand j'exécute pour la première fois dans l'environnement de production dans PostgreSQL 9.1
rake db:migrate RAILS_ENV=production
ou
rake db:schema:load RAILS_ENV=production
J'ai pu créer une base de données sans problèmes: rake db:create RAILS_ENV=production
=>OK
L'erreur est
rake aborted!
PG::UndefinedTable: ERROR: relation "categories" does not exist
LINE 5: WHERE a.attrelid = '"categories"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"categories"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Et les modèles suit tous les Rails de la convention d'affectation de noms. De sorte que, je ne sais pas ce que cette erreur est de me dire
¿Il y a autre chose qui peut provoquer cette erreur?
Les modèles:
class Category < ActiveRecord::Base
has_many :subcategories
end
class Subcategory < ActiveRecord::Base
belongs_to :category
end
shema.rb:
ActiveRecord::Schema.define(version: nnnn) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "categories", force: true do |t|
t.string "name"
t.text "comments"
t.datetime "created_at"
t.datetime "updated_at"
t.decimal "amount_need_comments", precision: 6, scale: 2
t.decimal "amount", precision: 6, scale: 2
t.decimal "amount_per_unit", precision: 6, scale: 2
t.integer "teletrabajo", limit: 2, default: 0, null: false
t.decimal "amount_need_city", precision: 6, scale: 2
end
create_table "subcategories", force: true do |t|
t.string "name"
t.text "comments"
t.integer "category_id"
t.datetime "created_at"
t.datetime "updated_at"
t.decimal "amount_need_comments", precision: 6, scale: 2
t.decimal "amount", precision: 6, scale: 2
t.decimal "amount_per_unit", precision: 6, scale: 2
t.decimal "amount_need_city", precision: 6, scale: 2
end
Et enfin, j'ai essayé quelque chose comme cela, sans succès
inflexions.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'category', 'categories'
inflect.irregular 'subcategory', 'subcategories'
inflect.plural 'category', 'categories'
inflect.plural 'subcategory', 'subcategories'
end
Et de supprimer la relation des modèles impliqués, comme ceci:
class ExpenseDetail < ActiveRecord::Base
# belongs_to :expense
# belongs_to :category
# belongs_to :subcategory
default_scope :order=>"id"
validate :expense_date...
...
source d'informationauteur Albert Català
Vous devez vous connecter pour publier un commentaire.
J'ai le même problème et je l'ai trouvé dans mon migrations je n'ai pas de table des noms au pluriel:
Par exemple:
J'ai
create_table :post
mais quand je l'ai changer pourcreate_table :posts
.Il de commencer à travailler!!!!
J'ai couru dans ma propre erreur encore une fois !!, lors de l'exécution de
rake test
mais dans ce cas, grâce à cedricdlb j'ai trouvé ici la solution, tout simplement: