রেলস-এ রুবি: আমি কীভাবে রেক ডিবি: মাইগ্রেট করে একটি স্থানান্তর ফিরিয়ে আনতে পারি?


94

নকশাকার মডেল ব্যবহারকারী ইনস্টল করার পরে আমি এটি পেয়েছি।

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end

    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
    # add_index :users, :confirmation_token,   :unique => true
    # add_index :users, :unlock_token,         :unique => true
    # add_index :users, :authentication_token, :unique => true
  end

  def self.down
    drop_table :users
  end
end

এখন আমি যদি রেক ডিবি করি: মাইগ্রেটে ব্যবহারকারী সারণী তৈরি হবে।

আমি কীভাবে এই মাইগ্রেশনটি ফিরিয়ে আনতে পারি, আমি কীভাবে আবার রেক ব্যবহার করে ব্যবহারকারীর টেবিলটি মুছতে পারি?

উত্তর:


147

নিম্নলিখিত কমান্ড চালান

rake db:migrate:down VERSION=<version>

<version>আপনি যে স্থানান্তর ফাইলটি ফিরে যেতে চান তার সংস্করণ নম্বরটি কোথায় ।

যেমন আপনি যদি 3846656238_create_users.rb ফাইলের নাম সহ কোনও মাইগ্রেশন ফিরিয়ে নিতে চান

রেক ডিবি: মাইগ্রেশন: ডাউন VERSION = 3846656238


আমি একটি পেয়ে যাচ্ছি UnknownMigrationVersionErrorতবে আমি বুঝতে পেরেছি যে আমার মাইগ্রেশনগুলি ভিতরে রয়েছে db/migrate/main, db:migrate:downসেই নির্দিষ্ট ডিরেক্টরিটি বা মাইগ্রেট সাব-ডাইরেক্টরিজগুলির ভিতরে খোঁজ করার জন্য কি কেউ এই বিষয়ে কাজ করতে পারে না?
tf.rz

এটি কেবল 3 এর পরে রেলের জন্য। আমার জীবন 2. তাই দু: খিত পাগল হয়
morhook

@ আমহুক এটি 3 রেলের জন্যও কাজ করে। এখানে দস্তাবেজগুলি পরীক্ষা করে দেখুন গাইড.আরবিওনরইলস.আর.ভি.২.২০
মহেশ

তুমি ঠিক! এটি রেল 2 এবং রেল 3 উভয়ের জন্যই কাজ করে Thanks আপনার ইনপুটটির জন্য @ মাহেশকে ধন্যবাদ!
মরহুক


65

আমি বিশ্বাস করি যে মাইগ্রেশন ফিরিয়ে আনতে এখানে তিনটি বিকল্প রয়েছে (সেগুলি ওভারল্যাপও করে):

  1. সর্বাধিক সাম্প্রতিক স্থানান্তর রোল :

    rake db:migrate:down # রেল কেবল 2।

  2. সাম্প্রতিক স্থানান্তরগুলির একটি সংখ্যা (এন) রোল করুন :

    rake db:rollback STEP=n

  3. নিচে পাকানো করতে একটি পূর্ববর্তী, নির্দিষ্ট সংস্করণ:

    $ rake db:migrate:down VERSION=nnn # রেল 3 (সংস্করণ নম্বরও সরবরাহ করুন)।

সংস্করণ সংখ্যাটির অর্থ SHA (সিকিওর হ্যাশ অ্যালগরিদম) প্রতিশ্রুতিবদ্ধ যা একটি দীর্ঘ হেক্সাডেসিমাল সংখ্যা যা 886af3194768917c78e এর মতো দেখতে কিছুটা ... আপনি এটি করে দেখতে পারেন git log

rake -T db:৩.২ রেলের জন্য কোনটি অন্তর্ভুক্ত রয়েছে তা ব্যবহার করে আপনি এই আদেশগুলি (এবং অন্যদের) তাদের বিবরণ দিয়ে দেখতে পারেন :

rake db:migrate         # Migrate the database (options: VERSION=x, VERBOSE=false)
rake db:migrate:status  # Display status of migrations
rake db:rollback        # Rolls the schema back to the previous version (specify steps w/ STEP=n)

5
নিচে পাকানো করতে একটি নির্দিষ্ট সংস্করণ:rake db:migrate VERSION=<version number>
Ajedi32

4
কমপক্ষে 3.0.20 রেলের জন্য, প্রথম কমান্ডটি ভুল। rake db:migrate:downত্রুটি বার্তা "VERSION আবশ্যক" সহ একটি একক অবতরণ। প্রস্তাবিত rake db:rollback তবে কাজ করে।
মার্টিন

উত্তরে বর্ণিত হিসাবে, প্রথম কমন্ডের জন্য কেবল 2 জন ব্যয় করে।
মাইকেল ডুরান্ট

4
পরিবেশের পরিবর্তনগুলি কেস সংবেদনশীল তাই এটি হওয়া উচিত STEPএবংVERSION
কোস্তাস রুসিস

, নির্মল $ rake db:migrate:down VERSION=nnnনিচে পাকানো না করতে একটি সংস্করণ, এটি ডাউন মাইগ্রেট সংস্করণ নির্দিষ্ট করা হয়েছে।
জন

15

আপনি রোলব্যাক করতে পারেন এবং কতগুলি শেষ মাইগ্রেশন রোলব্যাক করবেন তা উল্লেখ করতে পারেন, যেমন

rake db:rollback STEP=3

3 সর্বশেষ স্থানান্তর জন্য।


আপনি শেষ কয়েকটি স্থানান্তরকে পূর্বাবস্থায়
প্রাক-আলফা

11

নতুন প্রোগ্রামার হিসাবে (বা অন্য নতুন প্রোগ্রামারদের কাছে)

rake db:rollbackপ্রায় অর্ধেক সময় কাজ করে। আমি সেখানে শুরু।

যদি না, rake db:migrate:down VERSION=3846656238

আপনি যে পরিবহন ফাইলটি ফিরিয়ে নিতে চান তার সংস্করণ নম্বরটির জন্য VERSION প্লাগ ইন করুন।


10
rake db:migrate:redo

এটি সর্বশেষ স্থানান্তরটি পূর্বাবস্থায় ফিরিয়ে আনবে এবং পুনরায় প্রয়োগ করবে।


5

রেল 5 এর জন্য আমরা ব্যবহার করতে পারি rails command instead of rake

rails db:migrate:down VERSION=<version>

উদাহরণ

রেলস ডিবি: মাইগ্রেশন: ডাউন VERSION = 20170330090327


2

আপনার টার্মিনালে এই কমান্ডটি চালান:

rake db:migrate:status

বা

bundle exec rake db:migrate:status

এটি স্থিতি, মাইগ্রেশন আইডির, মাইগ্রেশনের নামটি সমস্ত মাইগ্রেশনের জন্য যা আমরা আগে দৌড়েছিলাম তা দেখায়। আপনার মাইগ্রেশন আইডি নির্বাচন করুন (যেমন আপনার সংস্করণ নম্বর) এবং সংস্করণ =, এর পরে নিম্নলিখিত আইডিটিতে সেই আইডি রাখুন এবং এন্টার টিপুন

bundle exec rake db:migrate:down VERSION=

0

কোনও স্থানান্তরকে কীভাবে রোল করবেন

(1) প্রথম স্থানান্তর আইডি সনাক্ত করুন

rake db:migrate:status

  • আইডি নম্বরটি কপি করুন।

পিছনে রোল করতে মাইগ্রেশন শনাক্ত করুন।

(২) তারপরে মাইগ্রেশনটি রোল করুন

rake db:migrate:down VERSION=20190802023239

  • উপরে সম্পর্কিত আইডি নম্বর পেস্ট করুন। অবশ্যই আপনার ক্ষেত্রে মাইগ্রেশন আইডি আলাদা হবে! সঠিক স্থানান্তর আইডি ব্যবহার করুন।

....... এবং এখন আপনি দৌড় বন্ধ!

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