PDA

View Full Version : roll back نکردن یک جدول در لاراول



tuytoosh
سه شنبه 18 فروردین 1394, 16:01 عصر
سلام دوستان

من چند جدول دارم در دیتابیسم که وقتی دستور php artisan migrate:rollback رو میزنم همه ی جدول ها به جز migrations (http://localhost/phpmyadmin/sql.php?server=1&db=master&table=migrations&pos=0&token=ba0e7a81728b602515a59c7eb116870a) و cats حذف میشن و این دوتا حذف نمیشن

و وقتی دوباره php artisan migrate رو میزنم این جواب رو میده : base table or view already exist

migration برای جدول cats اینه :



<?php


use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;


class Cats extends Migration {


/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cats' , function(Blueprint $table)
{
$table -> increments('id');
$table ->text('name');
$table ->text('desc');
$table->text('img');
$table->timestamps();
});
}


/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('cats');
}


}

moalla
چهارشنبه 19 فروردین 1394, 11:09 صبح
rollback همیشه اخرین migration شما رو برمیگردونه. نه تمام اونچیزهایی که تا الان ساختین
نکته بعد اینکه جدول migration بصورت پیش فرض هست و نباید پاکش کنید و الان برنامه متوجه نمیشه کدوم جدول رو migrate کرده و کدوم رو نکرده

راه حل:
جدول cat رو بصورت دستی از phpmyadmin حذف کنید و توی جدول migration برید و اونجا هم اسمی که مربوط به ایجاد cat میشه رو حذف کنید. حالا میتونید دستور php artisan migrate رو اجرا کنید و بعد از اجرای اون با rollback برش گردونید

rahahost
چهارشنبه 19 فروردین 1394, 17:51 عصر
سلام .

اگر با یکبار rollback کردن ، یک جدول باقی می مونه ، دلیلش اینه که اون یک جدول رو در migrate آخر نساختین و اگر دوباره rollback کنید ، اون جدول هم پاک میشه
البته ، طبق جواب آقای moalla ، شما دستی پاک کنید و دوباره migrate کنید ، فکر نکنم مجددا این مشکل بوجود بیاد :)