আমার স্কিমা.আরবি হারিয়েছে! এটি কি পুনরুত্থিত হতে পারে?


133

কিছু স্থাপনার সমস্যার কারণে আমি গিমে স্কিমা.আরবি ট্র্যাকিং বন্ধ করে দিয়েছি। কোনওভাবে আমি এটি স্টাফ করেছি এবং কোথাও কোথাও আমার স্কিমা.আরবি ফাইলটি অদৃশ্য হয়ে গেছে।

ডেটাবেস থেকে বা মাইগ্রেশন থেকে স্কিমা.আরবি পুনরায় তৈরির উপায় আছে কি? আমি বিদ্যমান তথ্য হারাতে পছন্দ করবেন না।

উত্তর:


230

আপনি যদি rake -Tএটি পরিচালনা করেন তবে এটি আপনার রেল প্রকল্পের জন্য সম্ভাব্য রেকের সমস্ত সম্ভাব্য তালিকা তালিকাভুক্ত করবে। এর মধ্যে একটি হ'ল ডিবি: স্কিমা: ডাম্প যা ডেটাবেস থেকে রেল অ্যাপের জন্য স্কিমা.আরবি পুনরায় তৈরি করবে।

bundle exec rake db:schema:dump

দুর্দান্ত ধন্যবাদ, অনেক উত্তর কিন্তু দেখে মনে হচ্ছে আপনি প্রথম (ন্যায়বিচার) হয়েছিলেন তাই আপনার জন্য টিক চিহ্ন। কেবল কৌতূহলী, এটি কি ডেটাবেস থেকে বা মাইগ্রেশন থেকে স্কিমা তৈরি করে?
ব্র্যাড

7
ডাটাবেস থেকে নিজেই, তাই মাইগ্রেশনের বাইরে এমন কোনও পরিবর্তন ঘটে থাকলে সতর্ক হন।
mguymon

1
স্কিমা.আরবিতে rake db:schema:dump2.0 রেলের পরে খালি স্কিমা রয়েছে
উইল হার্ডউইক-স্মিথ

উপরোক্ত কমান্ডগুলি চালনার পরে আমার স্কিমা.আরবি ফাইলটি ঠিক একইরকম থেকে যায়
স্টিভেক

59

সাবধান হন,

rake db:schema:dump

ডিবি থেকে বর্তমান ডিবি স্কিমা ফেলে দেবে । এর অর্থ হ'ল আপনি যদি নিজের মাইগ্রেশনে কোনও পরিবর্তন করেন তবে সেগুলি স্কিমা.আরবি ফাইলে প্রতিফলিত হবে না যা আপনি আইএমও চান।

আপনি যদি স্থানান্তর থেকে স্কিমাটি পুনরায় তৈরি করতে চান তবে নিম্নলিখিতগুলি করুন:

rake db:drop  # ERASES THE DATABASE !!!! 
rake db:create
rake db:migrate

1
এর ফলে ডেটা ক্ষতিগ্রস্থ হবে, যা ওপি বলেছে তারা এড়াতে চেয়েছিল। অধিকন্তু, কলিন উল্লেখ করেছেন যে, অদ্ভুত নির্ভরতা ইস্যুতে চালিত হওয়ার সম্ভাবনা (সাধারণত কথা বলা) বৃদ্ধির সম্ভাবনা বৃদ্ধির কারণে মাইগ্রেশন থেকে বিশুদ্ধভাবে ডাটাবেসটিকে পুনরায় তৈরি করা খুব খারাপ ধারণা। যদি মাইগ্রেশন মুলতুবি থাকে, তবে সম্ভবত শেষ মাইগ্রেশনগুলি ডেভলপমেন্ট মেশিনে চালানো, এবং তারপরে rake db:schema:dumpকমান্ডটি চালানো ভাল ।
পল রিখটার

4
প্রতিটি ক্যানভাস আমার উত্তর পরিষ্কারভাবে ব্যাখ্যা করা হয়। আমি কেবল স্কিমা চালিয়ে একেবারে কামড়েছি: ডাম্প এবং পরিষ্কার স্কিমা না পেয়ে। ওপি একটি সিভিএসে স্কিমা ট্র্যাক করার কথা বলছে। আমি চাই যে আমার স্কিমাটি আমার অভিবাসনগুলিতে আমার সংজ্ঞাগুলির সাথে একত্রিত হোক এবং কোনও প্রোডাকশন ডিবি বা পুরানো বিকাশ ডিবি থেকে কোনও অপ্রচলিত সংস্করণ নয়
গ্যামভ

11
rake db:schema:dump

আমি মনে করি এটি এখনও রেল 3 এ বৈধ - এটি ডাটাবেস থেকে স্কিমা.আরবি পুনরুত্থিত করে।


8

রেলস 5 ওয়ে:

rails db:schema:dump

বা যদি আপনি মণিটি মোকাবেলা করেন: তবে লোডআরআর :

bundle exec rails db:schema:dump

বিঃদ্রঃ:

রেল 5 এ পরামর্শ দেওয়া হয় যে এর railsপরিবর্তে ব্যবহার করে টাস্কটি জেনারেট / এক্সিকিউট করা হয় rake, এটি কেবল মনে রাখা দরকার, রেল তৈরির কাজটি এক্সটেনশনের .rakeমধ্যে রয়েছে lib/tasks/myTask.rake। যার অর্থ এই টাস্কগুলিও প্রিপেন্ডিংয়ের মাধ্যমে সম্পাদন করা যেতে পারে rake


5

আপনি যদি পুনর্জন্ম হয় schema.rb স্থানীয়ভাবে জেনারেট হন ঠিক আছে। এটি কেবল আপনার ডাটাবেস সারণির কাঠামোর প্রতিনিধিত্ব করে। ডেটা নিজেই এই ফাইলটিতে নেই।

আপনার schema.rbফাইলটি পুনঃজুনাতে চালনা করুন:

bundle exec rake db:schema:dump

তারপরে কেবল নতুন schema.rbফাইলটি প্রতিশ্রুতিবদ্ধ করুন এবং আপনার ভাল অবস্থানে থাকা উচিত!


4

সরাসরি স্কিমা.আরবি ফাইল থেকেই:

যদি আপনাকে অন্য সিস্টেমে অ্যাপ্লিকেশন ডেটাবেস তৈরি করতে হয় তবে আপনার উচিত db:schema:loadসমস্ত স্ক্র্যাচ থেকে মাইগ্রেশন চালাচ্ছেন না। পরবর্তীটি একটি ত্রুটিযুক্ত এবং অস্থিতিশীল পন্থা (আপনি যত বেশি স্থানান্তর করতে পারবেন ততই ধীরে চলবে এবং ইস্যুগুলির সম্ভাবনা আরও বেশি হবে)।

সুতরাং এই পরামর্শটি rake db:migrateযা করবেন না - যা এই লেখার সময় - সর্বনিম্ন রেটযুক্ত উত্তরটিতে প্রস্তাবিত হয়েছিল।


আপনার বিকাশ মেশিনে স্কিমার পুনঃজেনার আগে যদি কিছু থাকে তবে আপনি সম্ভবত শেষ কয়েকটি মাইগ্রেশন চালাতে চান, তবে হ্যাঁ স্থানান্তর থেকে খালি ডেটাবেসটিকে পুনরায় তৈরি করা খুব খারাপ ধারণা, বিশেষত যেহেতু এর ফলে ডেটা হ্রাস পাবে।
পল রিখটার

1

আমার একই ধরণের সমস্যা হয়েছিল যেখানে আমি মাইগ্রেশন মুছলেও আমার পুরানো স্কিমা সতেজ হয় না।

সুতরাং, আমি যা করেছি তা হ'ল ডাটাবেসে বিদ্যমান বিদ্যমান সারণীগুলি ফেলে দেওয়া এবং সেগুলি আবার স্থানান্তরিত করা। তারপরে "ডিবি: স্কিমা: লোড" কমান্ডটি আমাকে একটি নতুন স্কিমা.আরবি দিয়েছে।

drop table my_table_name // deleted them individually
rake db:migrate
rake db:schema:dump // re-created a new schema
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.