सवाल रेक डीबी: postgresql के साथ त्रुटि "डेटाबेस मौजूद नहीं है" फेंकता है


मैं डेबियन 7 के तहत पोस्टग्रेस्क्ल 9.1 के साथ रेल 4.1.5 का उपयोग कर रहा हूं, और मैं अपने विकास पर्यावरण में डेटाबेस बनाने में सक्षम नहीं हूं। जब मैं दौड़ता हूँ

bin/rake db:create

मुझे मिला

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

मैं डेटाबेस बनाने की कोशिश कर रहा हूं, स्वाभाविक रूप से, यह अस्तित्व में नहीं है। हालांकि रेलों को इसे बनाना चाहिए ... यहां मेरी कॉन्फ़िगरेशन / डेटाबेस.आईएमएल है:

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

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

और यहां postgresql लॉग का एक हिस्सा है:

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

क्या आपके पास कोई पॉइंटर्स है? मैं इस पर एक घंटे से अधिक समय से रहा हूं, और अभी भी यह समझ में नहीं आता कि यह क्यों हो रहा है ...

धन्यवाद!


44
2017-09-01 18:04


मूल


किस बारे में username तथा passowrd? - IS04
मुझे लगता है कि यह नहीं है: मैं postgresql "सहकर्मी" प्रमाणीकरण विधि का उपयोग कर रहा हूँ; वैसे भी, मामले में, मैंने भी जोड़ा username तथा password डेटाबेस.एमएलएल में, और अभी भी वही त्रुटि मिली है। मुझे यह भी लगता है कि, यदि यह प्रमाणीकरण समस्या थी, तो पोस्टग्रेस ने डीबी के बारे में शिकायत करने से पहले मौजूद उपयोगकर्ता के बारे में शिकायत नहीं की होगी। - Rodrigo Serrano


जवाब:


रेल 4.1 वसंत preloader के साथ जहाजों, तथा

नए रेल 4.1 अनुप्रयोग "वसंत" binstubs के साथ जहाज जाएगा। इसका मतलब है कि बिन / रेल और बिन / रेक स्वचालित रूप से प्रीलोडेड वसंत वातावरण का लाभ उठाएंगे।

जिसका मतलब है कि "वसंत" bin/rake ऐप को प्रीलोड करने का प्रयास करेगा, जो बदले में इनिटिलाइज़र को चलाने का प्रयास करेगा जिसके परिणामस्वरूप आप जो समस्या देख रहे हैं।

इस के आसपास फिक्स / काम करने के लिए आप वसंत के बिना प्रारंभिक सेटअप रेक कार्यों को चलाने के लिए चाहते हैं। इसे प्राप्त करने का एक तरीका इसके बजाय बंडलर के साथ इसे चलाने के लिए है:

bundle exec rake db:create

86
2018-02-11 10:34



आपने समस्या को सही तरीके से इंगित किया। यदि कोई प्रारंभकर्ता किसी मौजूदा डेटाबेस पर निर्भर करता है तो पूरे रेक कार्य db:create विफल रहता है। लेकिन आपने जो सुझाव दिया वह सामान्य समाधान नहीं है। यह आपके मामले में काम कर सकता है जो उपयोग कर रहा है spring लेकिन अन्य प्रारंभकर्ताओं को नहीं रोकता है - Bakhshi
के साथ काम करता है Rails 4.2 भी। धन्यवाद! - 0bserver07
यदि आप रेल 4.2 + पर समस्या को दबाते हैं, तो यह सही जवाब है। पोस्टग्रेज़ में उचित रूप से गड़बड़ करने की कोई आवश्यकता नहीं है। - Chase Gilliam
रेल 5.0.1 के लिए ही। पहले स्प्रिंग को रोकना या इसे DISABLE_SPRING से अक्षम करना व्यवहार को नहीं बदला। वसंत के बिना इसे पूरी तरह से चलाना एकमात्र चीज थी जो काम करती थी। - brainbag


आप इस कमांड को चलाने का प्रयास कर सकते हैं-

bin/rake db:create RAILS_ENV=development

या यह आदेश-

bin/rake db:migrate RAILS_ENV=development

12
2018-02-13 18:09



यह क्या है आखिरकार मेरे लिए काम किया ! - Homunculus Reticulli


मुझे समस्या मिली ...

इसे रेल प्रारंभकर्ताओं के साथ करना है: रेल निष्पादन से पहले सभी प्रारंभकर्ताओं को लोड करना प्रतीत होता है bin/rake db:create

और, इस विशेष एप्लिकेशन में, कुछ कस्टम प्रारंभकर्ता हैं जो ActiveRecord मॉडल पर निर्भर करते हैं (जो बदले में, बनाए जा रहे डेटाबेस पर निर्भर करता है, उपलब्ध है और इसी तालिका के साथ)।

इसलिए रेक वास्तव में कार्य को निष्पादित करने के लिए कभी नहीं मिलता है, यह प्रारंभकर्ताओं को निष्पादित करते समय विफल रहता है। मुझे पता होना चाहिए कि क्या मैंने पूरी तरह से त्रुटि संदेश लॉग को ध्यान से पढ़ा है। यह पूर्ण लॉग है (नीचे देखें, बोल्ड, अपमानजनक लाइनों में):

/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:898: 'कनेक्ट में बचाव' में: FATAL: डेटाबेस "डीएस-देव " अस्तित्व में नहीं है
`$ बिन / रेक डीबी चलाएं: अपना डेटाबेस बनाने के लिए डीबी: माइग्रेट करें '(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 'कनेक्ट' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:5268:in 'प्रारंभ करें' से
/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' से
/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' से
/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.rbodev16:in 'acqu_connection' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:351:in 'चेकआउट में ब्लॉक'
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/monitor.rbs11:in 'mon_synchronize' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:350:in 'चेकआउट' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rbs65:in 'कनेक्शन में ब्लॉक' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/monitor.rbs11:in 'mon_synchronize' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rbs64:in 'कनेक्शन' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:5241:in 'retrieve_connection' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_handling.rb:113:in 'retrieve_connection' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_handling.rb:87:in 'कनेक्शन' से
/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 से: 'प्राप्त करें'
/home/rs/pr/ds/config/initializers/custom/setup_mail.rb:3:in `'से'
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb3941:in 'load' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb3941:in 'लोड में ब्लॉक' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rbs32:in 'load_dependency' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb3941:in 'load' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:648:in 'load_config_initializer में ब्लॉक'
/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' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:612:in 'ब्लॉक (2 स्तर) में'
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:611:in 'प्रत्येक' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:611:in 'ब्लॉक' में
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:30:in 'instance_exec' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:30:in 'run' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:55:in 'run_initializers में ब्लॉक'
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rbs26:in 'tsort_each में ब्लॉक' से
प्रत्येक_स्ट्रॉन्ग_कनेक्टेड_कंपोनेंट में /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:348:in 'ब्लॉक (2 स्तर) से
प्रत्येक_स्ट्रॉन्ग_कनेक्टेड_कंपोनेंट_फ्रॉम में /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rbepend18:in `ब्लॉक (2 स्तर) से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:427:in 'प्रत्येक_स्ट्रॉन्ग_कनेक्टेड_कंपोनेंट_फॉम' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rbodev17:in में प्रत्येक_स्ट्रॉन्ग_कनेक्टेड_कंपोनेंट_फॉम '
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:44:in 'प्रत्येक' में
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:44:in 'tsort_each_child' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:411:in 'कॉल' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rbitness11:in 'प्रत्येक_स्ट्रॉन्ग_कनेक्टेड_कंपोनेंट_फ्रॉम' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:347:in में प्रत्येक_स्ट्रॉन्ग_कनेक्टेड_कंपोनेंट '
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in 'प्रत्येक' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in 'कॉल' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in 'प्रत्येक_स्ट्रॉन्ग_कनेक्टेड_कंपोनेंट' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rbs24:in `tsort_each 'से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:205:in 'tsort_each' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:54:in 'run_initializers' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/application.rb:300:in 'प्रारंभ करें!' से
/home/rs/pr/ds/config/environment.rboto:in `'से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rbs47:in 'आवश्यकता' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rbs47:in 'आवश्यकता में ब्लॉक' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rbs32:in 'load_dependency' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rbs47:in 'आवश्यकता' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:92:in 'preload' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:140:in 'सेवा' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:128:in 'ब्लॉक में रन'
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:122:in 'loop' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:122:in 'run' से
/home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in '' से '
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in 'आवश्यकता' से
/home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in 'आवश्यकता' से
से: 1: '' में '

मैं प्रारंभकर्ताओं में किसी भी मॉडल निर्भरता से छुटकारा पाने के लिए कोड को दोबारा करने पर काम करूंगा (जो मुझे यकीन है कि यह एक बहुत ही खराब अभ्यास होना चाहिए)।


10
2017-09-02 08:10



त्रुटि स्टैक निशान पढ़ने के महत्व पर जोर देने के लिए + 1 अधिक बारीकी से। इस तरह की सामग्री उन्हें रखने का पूरा बिंदु है। - i2097i


आज भी एक ही मुद्दा था (ओएस एक्स में)।

के साथ हल किया गया:

psql -U postgres
CREATE ROLE rolename WITH CREATEDB LOGIN;

उपयोग \du यह जांचने के लिए कि क्या यह बनाया गया है।

उपयोग \password rolename इसके लिए एक पासवर्ड बनाने के लिए उपयोगकर्ता भूमिका

फिर आप डीबी के साथ सेटअप कर सकते हैं bundle exec rake db:migrate


2
2017-10-06 12:40





मेरे लिए कोई भी समाधान काम नहीं करता, लेकिन यह मेरे लिए काम करता था।

$ brew services list
$ brew services restart postgresql

2
2018-03-06 13:29





मैं दो मुद्दों को देखता हूं, जैसा कि is04 ने इंगित किया है कि आपको शायद कम से कम एक की आवश्यकता है username आपके डेटाबेस में मूल्य .yml।

आपको पोस्टग्रेस भूमिका बनाने की भी आवश्यकता है:

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

1
2017-09-01 18:58



मैंने कोशिश की, लेकिन मुझे लगता है कि यह नहीं है: भूमिका पहले ही बनाई गई थी (वास्तव में एक सुपरडमिन के रूप में), और मैं postgrsql "सहकर्मी" प्रमाणीकरण विधि का उपयोग कर रहा हूं। मैंने केवल एक जोड़ने की कोशिश की username, और दोनों username तथा password किसी भी मामले में database.yml करने के लिए, और मुझे अभी भी एक ही त्रुटि मिली है। - Rodrigo Serrano
जहां तक ​​मुझे पता है कि माइग्रेशन स्वचालित रूप से SQLite के लिए डीबी बना देगा और पोस्टग्रेज़ के लिए आपको इसे अपने विकास और आगे के वातावरण पर बनाना होगा। - PatNowak
यह सही नहीं है। रेल ऑपरेटिंग सिस्टम उपयोगकर्ता के लिए डिफ़ॉल्ट है जो डेटाबेस को डिफ़ॉल्ट के रूप में प्रारंभ करता है database.yml टेम्पलेट बताता है: github.com/rails/rails/blob/...। इसलिए whoami मुझे विश्वास के रूप में उपयोग किया जाता है। psql postgres -U `whoami` अगर डेटाबेस को सही उपयोगकर्ता के साथ शुरू किया गया था तो काम करना चाहिए। - Olivier Lacan