Ich kann nicht rake db: migrieren, um auf meiner Rails 4.0.1-App auf Heroku ausgeführt zu werden.
Ich vermute, dass ich Postgres nicht richtig konfiguriert habe ... aber das Lesen der Docs auf Heroku hat nicht wirklich geholfen und ich bin mir nicht sicher, was ich tun soll. Ich weiß nicht viel über Heroku oder Postgres.
Jede Hilfe oder Ressourcen wäre sehr dankbar. Lass es mich wissen, wenn es noch etwas gibt, was ich posten kann.
(Auch ich verwende Gerät, wenn es darauf ankommt)
Wenn ich heroku run rake db:migrate
starte, bekomme ich Folgendes:
Running `rake db:migrate` attached to terminal... up, run.5077
PG::UndefinedTable: ERROR: relation "users" does not exist
LINE 5: WHERE a.attrelid = '"users"'::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 = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
rake aborted!
PG::UndefinedTable: ERROR: relation "users" does not exist
LINE 5: WHERE a.attrelid = '"users"'::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 = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Wenn ich heroku run rake db:setup
starte, bekomme ich Folgendes:
FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
... stack trace ...
Couldn't create database for {"adapter"=>"postgresql", "username"=>"aqofwrwjifcqkx", "password"=>"7yqDAx1L_4HFhw7WV3PH7ZrKyM", "port"=>5432, "database"=>"d5dvi0pjk7dgr7", "Host"=>"ec2-23-21-94-137.compute-1.amazonaws.com"}
gefolgt von der gleichen PG :: UndefinedTable-Fehler-Relation 'Benutzer' ist nicht vorhanden
datenbank.yml:
development:
adapter: sqlite3
encoding: unicode
database: chore_app_development
pool: 5
test:
adapter: sqlite3
encoding: unicode
database: chore_app_test
pool: 5
production:
adapter: postgresql
database: chore_app_production
pool: 5
timeout: 5000
Gemfile:
source 'https://rubygems.org'
Ruby '2.0.0'
gem 'Rails', '4.0.1'
# Database
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
# Assets
gem 'sass-Rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'turbolinks'
gem 'haml-Rails'
gem 'jquery-Rails'
# Heroku
gem 'Rails_12factor', group: :production
# Application
gem 'devise'
gem 'formtastic'
# Testing
gem 'factory_girl_Rails'
Ich hätte die Stack-Spur genauer lesen sollen. Meine factories.rb erstellte Benutzerobjekte als Attribute für andere Factories. Sie in einen Block zu packen reparierte es:
Ich würde es zuerst versuchen
heroku restart
heroku rake db:migrate
Wenn das nicht funktioniert, versuchen Sie es.
heroku pg:reset DATABASE_URL #Literally type in heroku pg:reset DATABASE_URL
heroku rake db:migrate
Lauf
heroku pg:reset DATABASE_URL
und du bist fertig.
Jasons Antwort könnte Ihr Problem beheben, aber ich wollte näher darauf eingehen, warum Sie den Fehler erhalten haben und wie er behoben werden kann.
Sie können "rake db: setup" nicht auf Heroku ausführen, da versucht wird, eine Datenbank zu erstellen, und Ihre Datenbank ist bereits auf Heroku vorhanden
In Ihrer database.yml sollten Sie die Datenbank-URL aus der Umgebungsvariablen lesen: Production: url: <%= ENV["DATABASE_URL"] %>
Ich denke, Sie erhalten den zweiten Fehler, weil Sie einige Versionsfehler in Ihren Migrationen haben. Wenn Sie sie von Anfang an ausführen, sollte dies behoben werden: rake db:migrate VERSION=0
Datenbank löschen und neu erstellen
heroku pg: DATENBANK zurücksetzen