নিরাপদে লারাভেলে মাইগ্রেশন সরান


206

লারাভেলে, স্থানান্তর তৈরি করার জন্য একটি আদেশ রয়েছে বলে মনে হচ্ছে, কিন্তু অপসারণ করা হচ্ছে না।

মাইগ্রেশন কমান্ড তৈরি করুন:

php artisan migrate:make create_users_table

আমি যদি মাইগ্রেশন মুছতে চাই, তবে আমি কি নিরাপদে ডেটাবেস / মাইগ্রেশন ফোল্ডারের মধ্যে সম্পর্কিত মাইগ্রেশন ফাইলটি মুছে ফেলতে পারি?

মাইগ্রেশন ফাইল:

2013_05_31_220658_create_users_table

উত্তর:


375

আমি দুর্ঘটনাক্রমে একটি খারাপ নাম (কমান্ড php artisan migrate:make:) দিয়ে মাইগ্রেশন তৈরি করেছি । আমি স্থানান্তর ( ) চালাতে পারি নিphp artisan migrate , তাই আমি এটি সরিয়ে নেওয়ার সিদ্ধান্ত নিয়েছি। আমার পদক্ষেপগুলি:

  1. মাইগ্রেশন ফাইলটির অধীনে ম্যানুয়ালি মুছুন app/database/migrations/my_migration_file_name.php
  2. সুরকার অটোলোড ফাইলগুলি পুনরায় সেট করুন: composer dump-autoload
  3. শিথিল করা

আপনি যদি মাইগ্রেশন চালনা করেন ( php artisan migrate), আপনি এটি করতে পারেন:

ক) চালান migrate:rollback- এটি সর্বশেষ স্থানান্তর পূর্বাবস্থায় ফেরানোর সঠিক উপায় (থ্যানেক্স @ জাকোবুদ)

খ) যদি migrate:rollbackকাজ না করে তবে ম্যানুয়ালি করুন (মাইগ্রেট করা বাগগুলি আমার মনে আছে: পূর্ববর্তী সংস্করণগুলিতে রোলব্যাক):

  1. মাইগ্রেশন ফাইলটির অধীনে ম্যানুয়ালি মুছুন app/database/migrations/my_migration_file_name.php
  2. সুরকার অটোলোড ফাইলগুলি পুনরায় সেট করুন: composer dump-autoload
  3. আপনার ডাটাবেসটি সংশোধন করুন: মাইগ্রেশন সারণী থেকে শেষ এন্ট্রি সরান

2
ধন্যবাদ। মাইগ্রেশন মুছে ফেলার পরে আমার কাছে গেটচা সুরকার ডাম্প-
অটোল্যাড

7
আপনি যদি মাইগ্রেশনটি চালিয়ে যান তবে "যথাযথ" migrate:rollbackউপায়টি হ'ল মাইগ্রেশনটি রোলব্যাক করার জন্য চালানো হয়, তারপরে মাইগ্রেশন ফাইলটি মুছুন এবং অটোল্যাড ডাম্প করুন। ডিবি বা মাইগ্রেশন টেবিল হ্যাক করার দরকার নেই।
জেক উইলসন

(পিএইচপি কারিগর মাইগ্রেট) পরে পদক্ষেপের দুর্দান্ত উত্তর (ওয়াই)
ইমরান খান

আমার Godশ্বর এবং আমি যখন নিজেকে ভুল করেছিলাম তখন নিজেকে কষ্ট দিয়েছিলাম। ধন্যবাদ.
পাবলো

4. ডিবি থেকে প্রকৃত সারণি মুছুন
জীন

64

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


যদিও তিনি মাইগ্রেশন চালান নি। আপনি আসলে যা করেননি তা ফিরিয়ে দিতে পারবেন না, পারবেন কি?
স্টিফেন

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

14
 php artisan migrate:fresh

কাজটি করা উচিত, যদি আপনি বিকাশে থাকেন এবং কাঙ্ক্ষিত ফলাফলটি শুরু হয়।

উত্পাদনে, এটি সম্ভবত কাঙ্ক্ষিত জিনিস নয়, তাই আপনাকে বিবর্তিত করা উচিত। (স্থানান্তর: নতুন কমান্ড ডাটাবেস থেকে সমস্ত সারণী বাদ দেবে এবং তারপরে স্থানান্তরিত কমান্ড কার্যকর করবে)।


5
3 upvotes? ওপি কোনও স্থানান্তর মুছে ফেলার উপায় চেয়েছিল, পুরো ডেটাবেস ধ্বংস এবং রিফ্রেশ না করে। এটি মারাত্মক পরামর্শ, আপনি কী করছেন তা যদি না জানেন তবে এটি করবেন না।
গুডবাইটস

মাইগ্রেশনের মধ্যে পার্থক্য সম্পর্কে দয়া করে পড়ুন : রিফ্রেশ করুন এবং মাইগ্রেট করুন: আপনি যেটিকে প্রথমে বর্ণনা করছেন তা সতেজ হয়েছে , পরবর্তীকালে ম্যানুয়াল কাজটি এড়িয়ে আংশিক পুনঃস্থাপন করে!
জোয়াস

1
স্থানান্তর: তাজা সাথে সাথে সমস্ত টেবিলগুলি ড্রপ করে এবং মাইগ্রেশনটিকে পুনরায় চালায় যেন প্রথমবারের মতো চলছে। এটি সম্পর্কে আংশিক কিছুই নেই .. কোনও তথ্য চলে যাবে। এটি সমস্যার সমাধান করবে তবে এটি প্রশ্নের বৈধ উত্তর নয়।
গুডবাইটস

12

স্থানান্তর টেবিল থেকে আপনার সম্ভবত এন্ট্রি মুছতে হবে।


7

আমি দুর্ঘটনাক্রমে দুটি বার create_users_table তৈরি করেছি। এটি কিছু ক্লাসকে ওভাররাইড করেছে এবং রোলব্যাকটি ত্রুটি-ধারণাটিতে পরিণত হয়েছে।

আপনাকে যা করতে হবে তা হ'ল বিক্রেতা / সুরকার ফোল্ডারে অটোলোড_ক্লাসম্যাপ.এফপি এবং সুনির্দিষ্ট কোডের লাইন যেমন সন্ধান করুন

'CreateUsersTable' => $baseDir . '/app/database/migrations/2013_07_04_014051_create_users_table.php',

এবং সম্পাদনার পথ। তাহলে আপনার রোলব্যাকটি ঠিকঠাক হওয়া উচিত।


আপনি যদি - আমি যেমন করেছি - স্রেফ গিয়েছিলাম এবং একটি মাইগ্রেশন ফাইলটির নাম বদলে দেওয়া হয়েছে এটি আপনি যা উত্তর খুঁজছেন তা! ধন্যবাদ।
বার্ডাস

2
আপনি কেবল "সুরকার ডাম্পটোলএড" করতে পারেন
FooBar

5

আমি বর্তমানের উত্তরগুলির সাথে একমত, আমি কেবল আরও কিছু তথ্য যুক্ত করতে চাই।

লারাভেল 5.3 এবং উপরের সংস্করণে একটি নতুন বৈশিষ্ট্য যুক্ত করা হয়েছে যা আপনাকে একটি একক স্থানান্তর ব্যাকআপ করতে দেয়:

php artisan migrate:rollback --step=1

পরে, ম্যানুয়ালি মাইগ্রেশন ফাইলটি এর অধীনে মুছুন database/migrations/my_migration_file_name.php

আপনি যখন কোনও মাইগ্রেশন চালান এটির জন্য এটি দুর্দান্ত বৈশিষ্ট্য

এইভাবে, আপনি নিরাপদে কেবলমাত্র 2 পদক্ষেপে লারাভেলে স্থানান্তর সরিয়ে ফেলতে পারেন


0

আমি বরং এটি নিজেই করব

  1. প্রথমে মডেলটি মুছুন (যদি আপনি না করেন) তবে আর মডেলটির প্রয়োজন নেই
  2. ...database/migrationsফোল্ডার থেকে স্থানান্তর মুছুন
  3. আপনি যদি ইতিমধ্যে স্থানান্তরিত হয়ে থাকেন অর্থাৎ যদি আপনি ইতিমধ্যে চালিত php artisan migrateহয়ে থাকেন তবে আপনার phpmyadmin বা এসকিউএল (যাহা কেসই হোক) লগইন করুন এবং আপনার ডাটাবেসে মাইগ্রেশন দ্বারা তৈরি টেবিলটি মুছুন
  4. এখনও আপনার ডাটাবেসের মধ্যে, মাইগ্রেশন ফোল্ডারে, সেই মাইগ্রেশন ফাইলের নামের সাথে সারিটি চিহ্নিত করুন এবং সারিটি মুছুন।

আমার জন্য কাজ করে, আশা করি এটি সাহায্য করবে!


-2

এটি আমার পক্ষে কাজ করে:

  1. আমি আমার ডাটাবেসে সমস্ত টেবিল মুছে ফেলেছি, প্রধানত স্থানান্তর টেবিল।
  2. php artisan migrate:refresh

লারাভেল 5.5.43 এ

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