2016-11-30 25 views
5

रेल ड्रॉप नहीं कर सकते 5
Postgresql 9.4.10
PostGIS 2.1.8
रेल + PostGIS: त्रुटि तालिका spatial_ref_sys

जब मैं रेक डाटाबेस का प्रयास करें: रीसेट, कंसोल एक त्रुटि

rake aborted! ActiveRecord::StatementInvalid: 
PG::DependentObjectsStillExist: ERROR: cannot drop table 
spatial_ref_sys because extension postgis requires it HINT: You can 
drop extension postgis instead. : DROP TABLE "spatial_ref_sys" CASCADE 
दिखाने

मैं psql और postgis के लिए नया हूं, किसी भी मदद की सराहना की जाएगी।

+0

आप कहीं भी –

+0

तालिका का संदर्भ दे रहे हैं क्या आपके पास SpatialRefSys मॉडल के साथ सेट किया गया है 'has_many' रिश्ते)? – Viro

उत्तर

3

जब मैंने enable_extension :postgis के साथ माइग्रेशन बनाया, तो मैंने उसी समस्या में भाग लिया। इसका विस्तार विस्तार करने का इरादा प्रभाव था, लेकिन यह db/schema.rb फ़ाइल को spatial_ref_sys तालिका को शामिल करने के लिए भी अपडेट किया गया, जो पोस्टगिस द्वारा आवश्यक है।

हालांकि, हम नहीं db/schema.rb फ़ाइल इस तालिका में शामिल करने, क्योंकि तब एक db:drop या db:reset कोशिश करते हैं और तालिका निकाल देंगे चाहते हैं, और हम इस त्रुटि मिल जाएगा।

इस तालिका को अनदेखा करने की रेल कहता हूं, हम config/environment.rb के अंत में निम्नलिखित जोड़ सकते हैं:

ActiveRecord::SchemaDumper.ignore_tables = ["spatial_ref_sys"] 

इसके अलावा, भूल नहीं है db/schema.rb से create_table बयान हटाने के लिए।

0

यह विशेष तालिका पोस्टजीआईएस एक्सटेंशन के साथ आता है। यह स्वचालित रूप से जोड़ा गया था। आपकी schema.rb में शायद लाइन है: create_table "spatial_ref_sys", primary_key: "srid", id: :integer, force: :cascade do |t|

फिर आप rake db:reset के साथ अपने डेटाबेस को फिर से बनाने का प्रयास करें या शायद rake के साथ एक परीक्षण डेटाबेस बनाएं। क्योंकि force विकल्प सेट है यह पहले मौजूदा तालिका ड्रॉप करें लेकिन पोस्टगिस द्वारा इसकी आवश्यकता है।

त्वरित समाधान कुछ प्रारंभकर्ता में इस तालिका को अनदेखा करने की है:

::ActiveRecord::SchemaDumper.ignore_tables |= %w(spatial_ref_sys) 

फिर अपने schema.rb ताज़ा करने के लिए rake db:migrate चलाने के लिए और यह किया है।

लेकिन अधिक संभावना है कि आप मणि activerecord-postgis-adapter का उपयोग करके कुछ पोस्टजीआईएस सुविधाओं के साथ काम करना चाहेंगे। यह आपके लिए schema.rb भी ठीक करेगा।

संबंधित मुद्दे