Soru rake db: creategrip ile "veritabanı mevcut değil" hatası oluşturur


Debian 7 altında postgresql 9.1 ile 4.1.5 rayları kullanıyorum ve geliştirme ortamımda bir veritabanı oluşturamıyorum. Koştuğumda

bin/rake db:create

alırım

home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:898:in `rescue in connect': FATAL:  database "direct-dev" does not exist
Run `$ bin/rake db:create db:migrate` to create your database (ActiveRecord::NoDatabaseError)
from /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:888:in `connect'
from ...

Veritabanını yaratmaya çalışıyorum, doğal olarak var değil. Ancak raylar onu oluşturmalı ... İşte benim config / database.yml:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: direct-dev

Ve işte postgresql günlüğünün bir parçası:

2014-09-01 19:30:40 CEST LOG:  connection received: host=[local]
2014-09-01 19:30:40 CEST LOG:  connection authorized: user=rs database=direct-dev
2014-09-01 19:30:40 CEST FATAL:  database "direct-dev" does not exist

İşaretçiniz var mı? Bir saatten fazla bir süredir buradayım ve bunun neden olduğunu hala anlayamıyorum ...

Teşekkürler!


44
2017-09-01 18:04


Menşei


ne dersin username ve passowrd? - IS04
Ben öyle değil: Postgresql "eş" kimlik doğrulama yöntemini kullanıyorum; her neyse, ne olur ne olmaz diye de ekledim username ve password database.yml ve hala aynı hatayı aldım. Ayrıca, bir kimlik doğrulama problemi olsaydı, postgres'in db hakkında şikayette bulunmadan önce var olmayan kullanıcı hakkında şikayette bulunacağını düşünüyorum. - Rodrigo Serrano


Cevaplar:


Raylar 4.1 bahar preloader ile gemiler, ve

Yeni Raylar 4.1 uygulamaları "yaylı" binstub'larla gönderilecektir. Bu, bin / raylar ve bin / tırmık ön yüklenen yay ortamlarından otomatik olarak yararlanacağı anlamına gelir.

"yayılmış" anlamına gelir bin/rake Uygulamayı önceden yüklemeye çalışacak ve bu da karşılaştığınız soruna neden olan başlatıcıları çalıştırmaya çalışacaktır.

Bunu düzeltmek / bunun için çalışmak için, ilk kurulum tepkisi görevlerini yay olmadan çalıştırmak istersiniz. Bunu başarmanın bir yolu, bunun yerine paketleyiciyle çalıştırmaktır:

bundle exec rake db:create

86
2018-02-11 10:34



Sorunu doğru bir şekilde belirttiniz. Başlatıcılardan herhangi biri mevcut bir veritabanına bağlıysa, o zaman tüm komisyon görevi db:create başarısız olur. ama önerdiğiniz şey mutlaka jenerik çözüm değildir. Kullanmakta olan davada işe yarayabilir spring ama diğer başlatıcıları engellemez - Bakhshi
İle çalışır Rails 4.2 de. Teşekkürler! - 0bserver07
Eğer Rails 4.2 + 'ya geçerseniz, bu doğru cevaptır. Postgreslere uygun şekilde dağılmaya gerek yoktur. - Chase Gilliam
Rails 5.0.1 için de aynı. İlk önce Spring'in durdurulması veya DISABLE_SPRING ile devre dışı bırakılması, davranışı değiştirmedi. İlkbahar olmadan koşmak, işe yarayan tek şeydi. - brainbag


Bu komutu çalıştırmayı deneyebilirsin.

bin/rake db:create RAILS_ENV=development

Ya da bu komut

bin/rake db:migrate RAILS_ENV=development

12
2018-02-13 18:09



Bu nedir en sonunda benim için çalıştı. ! - Homunculus Reticulli


Sorunu buldum ...

Rails başlatıcıları ile ilgilidir: Rails, yürütmeden önce tüm başlatıcıları yükler gibi görünüyor bin/rake db:create.

Ve, bu özel uygulamada, bir ActiveRecord modeline bağlı olan birkaç özel başlatıcı vardır (bu da, yaratılan, mevcut ve ilgili tablo ile birlikte).

Bu nedenle, komisyon aslında hiçbir zaman görevi yürütmez, başlatıcıları çalıştırırken başarısız olur. Tüm hata mesajı günlüğünü dikkatlice okuduğumu bilmeliydim. Bu tam günlüğü (aşağıdan aşağıya kalın, kırıcı çizgiler):

/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:898:in `bağlantıda kurtarma ': FATAL: veritabanı" ds-dev " bulunmuyor
$ Bin / rake db komutunu çalıştırın: veritabanınızı oluşturmak için db: migrate 'yazın (ActiveRecord :: NoDatabaseError)
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:888:in 'bağlan'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:568:in `initialize '
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in 'new'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in 'postgresql_connection' adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:435:in `new_connection 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:445:in `checkout_new_connection '
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in `acquire_connection 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:351:in "Ödeme sırasında engelleme"
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:350:in 'checkout'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `bağlantıda blok '
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in 'bağlantı'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:541:in 'retrieve_connection' adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_handling.rb:113:in 'retrieve_connection' adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_handling.rb:87:in 'bağlantı'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/model_schema.rb:209:in 'table_exists?'
/home/rs/pr/ds/app/models/property.rb:32:in `get 'den
/home/rs/pr/ds/config/initializers/custom/setup_mail.rb:3:in `'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:241:in `load 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:241:in `yükte blok '
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:232:in `load_dependency 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:241:in `load 'adresinden
load_config_initializer '/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:648:in `bloğundan'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/notifications.rb:161:in 'instrument'
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:647:in `load_config_initializer 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:612:in 'bloğundan (2 seviye)'
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:611:in her birinden '
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:611:in 'bloğunda'
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:30:in `instance_exec 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:30:in `run 'adresinden
run_initializers '/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:55:in `bloğundan
tsort_each bloğunda /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:226:in `bloğu
from /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:348:in 'her_strongly_connected_component' bloğunda (2 seviye) '
from /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:418:in `her_strongly_connected_component_from 'bloğunda (2 seviye)
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:427:in `her_strongly_connected_component_from 'dan
from /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:417:in 'her_strongly_connected_component_from' bloğunda
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:44:in 'her'
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:44:in `tsort_each_child 'adresinden
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:411:in `call 'adresinden
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:411:in `her_strongly_connected_component_from 'dan
from /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:347:in 'her_strongly_connected_component' bloğunda '
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in her birinde '
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in `call '
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in `her_strongly_connected_component 'adresinden
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each 'adresinden
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:54:in `run_initializers 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/application.rb:300:in `initialize! '
/home/rs/pr/ds/config/environment.rb:5:in `'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:247:in 'gerektiren'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:247:in 'gerektiren blok'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:232:in `load_dependency 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:247:in 'gerektiren'
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:92:in `preload 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:140:in 'serve'
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:128:in `run blokta '
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:122:in `loop 'adresinden
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:122:in 'Çalıştır'
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in `'adresinden
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in 'gerektiren'
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in 'gerektiren'
-e: 1: in ''

Başlatıcılarda herhangi bir model bağımlılıktan kurtulmak için kodun yeniden düzenlenmesi üzerinde çalışacağım (ki bu oldukça kötü bir uygulama olması gerektiğinden eminim).


10
2017-09-02 08:10



Okuma hatalarının önemini vurgulamak için + 1 hata yığınlarını daha yakından izler. Bunun gibi şeyler, onlara sahip olmanın bütün noktasıdır. - i2097i


Bugün aynı sorun vardı (OS X).

İle çözüldü:

psql -U postgres
CREATE ROLE rolename WITH CREATEDB LOGIN;

kullanım \du oluşturulup oluşturulmadığını kontrol etmek için

kullanım \password rolename bunun için bir şifre oluşturmak Kullanıcı rolü.

Sonra DB'yi bundle exec rake db:migrate


2
2017-10-06 12:40





Çözümlerin hiçbiri benim için işe yaramadı, ama bu benim için çalıştı.

$ brew services list
$ brew services restart postgresql

2
2018-03-06 13:29





İki meseleyi görüyorum, is04 işaretinin muhtemelen en azından bir username database.yml değerindeki değer.

Ayrıca, postgres rolünü oluşturmanız gerekir:

su - postgres
create role direct-dev with createdb login password 'password1'

1
2017-09-01 18:58



Denedim, ama sanırım öyle değil: rol zaten oluşturuldu (aslında bir süperadmin olarak) ve postgrsql "eş" kimlik doğrulama yöntemini kullanıyorum. Sadece eklemeye çalıştım username, ve ikisi username ve password her durumda database.yml ve hala aynı hatayı aldım. - Rodrigo Serrano
Bildiğim kadarıyla, geçiş otomatik olarak SQLite ve Postgres için db oluşturacak ve geliştirme ve ileri ortamlarda kendi başınıza oluşturmalısınız. - PatNowak
Bu doğru değil. Varsayılan olarak veritabanını ilklendiren işletim sistemi kullanıcısına varsayılan değer yüklenir database.yml şablon açıklar: github.com/rails/rails/blob/.... Yani whoami inanıyorum varsayılan olarak kullanılır. psql postgres -U `whoami` veritabanı doğru kullanıcı ile başlatılmışsa çalışmalıdır. - Olivier Lacan