ডাটাবেস পুনরায় সেট করুন (সমস্ত শুদ্ধ করুন), তারপরে একটি ডাটাবেস বীজ করুন


159

ডাটাবেস টেবিলগুলিতে ডেটা মুছে ফেলার জন্য কি রেক কমান্ড আছে?

আমি কীভাবে একটি ডিবি তৈরি করব: বীজ স্ক্রিপ্টটি আমার টেবিলগুলিতে প্রাক-পূরণের ডেটা করতে?

উত্তর:


278

আমি rake db:resetকোন ড্রপগুলি ব্যবহার করি এবং তারপরে ডাটাবেসটি পুনরায় তৈরি করে তাতে আপনার বীজ.আরবি ফাইল অন্তর্ভুক্ত থাকে। http://guides.rubyonrails.org/migrations.html#resetting-the-database


4
এটির পক্ষে সাইড নোট: যদি উত্পাদনে থাকে তবে আপডেটগুলি / আপডেট করার জন্য পৃষ্ঠাগুলি প্রদর্শিত হওয়ার জন্য আপনাকে রেল সার্ভার পুনরায় চালু করতে হতে পারে।
এটস্ম

160

আপনি সবকিছু মুছে ফেলতে এবং উভয় দিয়ে ডাটাবেস + বীজ পুনরায় তৈরি করতে পারেন:

  1. rake db:reset: স্কিমা.আরবি থেকে লোড
  2. rake db:drop db:create db:migrate db:seed: স্থানান্তর থেকে বোঝা

নিশ্চিত হয়ে নিন যে আপনার ডিবি (রেল সার্ভার, এসকিউএল ক্লায়েন্ট ..) এর সাথে কোনও সংযোগ নেই বা ডিবি ছাড়বে না।

স্কিমা.আরবি হ'ল আপনার ডেটাবেজের বর্তমান অবস্থার একটি স্ন্যাপশট:

rake db:schema:dump

লোকেরা যে কোনও সার্ভার বন্ধ করে দিতে ডিবি সঠিকভাবে বাদ পড়েছে তা নিশ্চিত করার জন্য ধন্যবাদ।
aardvarkk

6

আপনি যদি কেবলমাত্র আপনার ডেটা পুনরায় লোড করার জন্য পুরো শেবাংটি ফেলে এবং পুনরায় তৈরি করার মতো মনে করেন না, আপনি আপনার স্টেটমেন্টগুলি ডেটা লোড করার আগে একটি টেবিল পরিষ্কার করতে সিড.ডিবি ফাইলটিতে MyModel.destroy_all(বা delete_all) ব্যবহার করতে পারেন MyModel.create!(...)। তারপরে, আপনি db:seedবারবার অপারেশনটি আবার করতে পারেন । (স্পষ্টতই, এটি কেবলমাত্র আপনি যে টেবিলগুলিতে ডেটা লোড করেছেন সেগুলিকেই প্রভাবিত করে, বাকিগুলি নয় not)

উপরে এবং নীচে স্থানান্তরিত করার মতো একটি "ডি-সিডিং" অপারেশন যুক্ত করতে https://stackoverflow.com/a/14957893/4553442 এ একটি "নোংরা হ্যাক" রয়েছে ...


চতুর, স্ক্র্যাচ থেকে প্রতিটি সময়
পুনরুদ্ধার করা

5

5 রেল হিসাবে, rakeকমান্ডলাইন সরঞ্জামটি railsএখনই ঠিক মতো করা হয়েছে

rails db:reset পরিবর্তে rake db:reset

ঠিক পাশাপাশি কাজ করবে


0

আপনি rake db:resetযখন স্থানীয় ডাটাবেসটি ফেলে রাখতে চান এবং ব্যবহার করা ডেটা দিয়ে তাজা শুরু করতে পারেন আপনি তা ব্যবহার করতে পারেনdb/seeds.rb । আপনি যখন এখনও আপনার স্কিমার সন্ধান করছেন এবং এটি প্রায়শই বিদ্যমান মডেলগুলিতে ক্ষেত্রগুলি যুক্ত করতে হবে তখন এটি একটি দরকারী কমান্ড।

রিসেট কমান্ডটি একবার ব্যবহার করা হলে এটি নিম্নলিখিতটি করবে: ডাটাবেসটি ফেলে দিন: rake db:drop স্কিমা লোড করুন: rake db:schema:load ডেটা বীজ করুন:rake db:seed

তবে আপনি যদি আপনার ডাটাবেসটিকে পুরোপুরি ফেলে দিতে চান তবে আপনি ব্যবহার করতে পারেন rake db:drop। ডাটাবেস বাদ দেওয়া যেকোন স্কিমা বিবাদ বা খারাপ ডেটাও সরিয়ে ফেলবে। আপনি যদি নিজের কাছে থাকা ডেটা রাখতে চান তবে এই কমান্ডটি চালানোর আগে অবশ্যই এটির ব্যাকআপ নিশ্চিত করুন।

এটি সবচেয়ে গুরুত্বপূর্ণ রেক ডাটাবেস কমান্ড সম্পর্কে একটি বিশদ নিবন্ধ ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.