wake-up-neo.com

Rails 4.0.1 auf Heroku kann keine Datenbank erstellen

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'
15
user2043725

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:

FactoryGirl schraubt Rechen hoch db: Prozess migrieren

5
user2043725

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
47
jason328

Lauf

heroku pg:reset DATABASE_URL

und du bist fertig.

4
Saqib R.

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.

  1. 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

  2. In Ihrer database.yml sollten Sie die Datenbank-URL aus der Umgebungsvariablen lesen: Production: url: <%= ENV["DATABASE_URL"] %>

  3. 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

2
Eduardo Veras

Datenbank löschen und neu erstellen

  1. Melden Sie sich bei heroku im Terminal an 
  2. cd in deine app
  3. Lauf

heroku pg: DATENBANK zurücksetzen

0