2011-07-21 22 views
6

मैंने एक साधारण रेल एप्लिकेशन विकसित किया जो मेरी विकास मशीन पर पूरी तरह से चलता है।रेल: 'तालिका नहीं मिल सका' त्रुटि

ActiveRecord::StatementInvalid (Could not find table 'categories') 

क्या गलत है:

जब मैं यह उत्पादन सर्वर (Phusion यात्री/Nginx) पर डाल दिया, यह मेरे my_app/log/production.log फ़ाइल में है कि त्रुटि देता है?

पीएस: नामकरण त्रुटि के बाद, तालिका का नाम मैन्युअल रूप से संपादित किया गया था लेकिन यह विकास मोड में बहुत अच्छा काम करता है। मुझे संदेह नहीं है कि गलतफहमी त्रुटि।

+3

क्या आपने अभी तक अपने सर्वर पर 'रेक डीबी: माइग्रेट' चलाया है? वास्तव में – stephenmurdoch

+3

। मैं निम्नलिखित कमांड निष्पादित करना भूल गया: 'रेक डीबी: माइग्रेट RAILS_ENV = "उत्पादन" '। कृपया, अपनी टिप्पणी पोस्ट करें ताकि मैं इसे सबसे अच्छे उत्तर के रूप में चिह्नित कर सकूं। – Zakaria

उत्तर

5
  1. सुनिश्चित करें कि आप

  2. मैन्युअल संपादन टेबल उत्पादन सर्वर पर अपने डेटाबेस माइग्रेशन चलाने कर दिया है एक विशाल कोई रेल में कोई है। यह आपको लायक होने की तुलना में अधिक सिरदर्द देगा। अगर आपको कुछ बदलने की ज़रूरत है, तो आप इसे बदलने के लिए एक नया माइग्रेशन उत्पन्न करने के तरीके बेहतर हैं - भले ही यह सिर्फ एक नाम बदल जाए। (हालांकि आप डीबी परिवर्तनों को रोलबैक कर सकते हैं, उस अंतिम माइग्रेशन को हटा सकते हैं और एक नया बना सकते हैं - लेकिन जैसा कि मैंने कहा - यह इसके लायक से अधिक परेशानी है)

  3. सुनिश्चित करें कि आपकी स्कीमा xml फ़ाइल सही है या कम से कम वास्तविक से मेल खाती है स्कीमा। आप इसे हटा सकते हैं और रेक चला सकते हैं: डीबी: एक नया उत्पन्न करने के लिए माइग्रेट करें।
+0

आपकी जानकारी के लिए धन्यवाद। – Zakaria

0

आप इन गलतफहमी त्रुटियों को रोकने के लिए मैन्युअल रूप से ActiveRecord मॉडल के लिए तालिका नाम असाइन कर सकते हैं।

class Category < ActiveRecord::Base 
    self.table_name = 'categories' 
end 
संबंधित मुद्दे