0

Я начинаю с самообучающегося проекта, построенного на вершине Laravel 5.2, и я нашел свою первую проблему: саморекламу в миграции.Как создать отношения саморекламы (внешний ключ) в миграции Laravel?

Это как файл 2016_08_02_024942_create_navigation_table.php выглядит как (у меня есть удалить комментарии для не сделать пост слишком долго):

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

class CreateNavigationTable extends Migration 
{ 
    public function up() 
    { 
     Schema::create('navigation', function (Blueprint $table) { 
      $table->engine = 'InnoDB'; 
      $table->increments('id')->unsigned(); 
      $table->integer('position')->unsigned(); 
      $table->string('title'); 
      $table->string('slug'); 
      $table->string('permissions')->nullable(); 
      $table->timestamps(); 
      $table->softDeletes(); 
     }); 
    } 

    public function down() 
    { 
     Schema::drop('articles'); 
    } 
} 

И потом, потому что я прочитал несколько постов здесь, как this, this, this и много больше я сделать еще один файл с только отношением с именем, как 2016_08_02_030158_add_parent_to_navigation_table.php со следующим кодом:

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

class AddParentToNavigationTable extends Migration 
{ 
    public function up() 
    { 
     Schema::table('navigation', function (Blueprint $table) { 
      $table->foreign('parent_id')->references('id')->on('navigation')->onUpdate('cascade')->onDelete('cascade'); 
     }); 
    } 

    public function down() 
    { 
     Schema::drop('articles'); 
    } 
} 

Но когда я запускаю команду php artisan migrate я получил т он следующее сообщение об ошибке, и я не уверен, что я делаю неправильно:

[Осветите \ Database \ QueryException] SQLSTATE [42S01]: Базовая таблица или вид уже существует: 1050 Таблица «навигация» уже существует (SQL: создать таблицу navigation (id Int неподписанных не нулевой auto_increment первичный ключ, position Int неподписанных не равно нулю, title Varc хар (255) не равно нулю, slug VARCHAR (255) NOT NULL, permissions VARCHAR (255) нуль, created_at метка времени нулевой , updated_at timestamp null, deleted_at метки набор нуля) символов по умолчанию utf8 сверять utf8_unicode_ci Engin е = InnoDB)

[PDOException] SQLSTATE [42S01]: Базовая таблица или представление уже существует: 1050 Таблица 'навигация' уже существует

Can дайте мне несколько советов? Что я делаю неправильно? У меня есть this package, но я не уверен, решит ли он мою проблему.

+0

Вы очистили базу данных, прежде чем запускать ее снова? – xdevnull

+0

Также вам не нужно добавлять '' 'unsigned()' '' for '' 'increments()' '', но по умолчанию он неподписан (Tip) – xdevnull

+0

@xdevnull Я запустил команду 'php artisan migrate: rollback 'и он очищает DB – ReynierPM

ответ

1

SQLSTATE [42S01]: Базовая таблица или представление уже существует: 1050 Таблица 'навигация' уже существует

Средства у вас есть такое же имя таблицы в базе данных

Так что вам нужно проверьте, у вас нет стол с этим имя в базе данных.

  • Убедитесь в отсутствии имени таблицы с таким же именем
  • Выполнить миграцию снова

    php artisan migration:rollback Иногда не удается удалить таблицу по разным причинам.

Смежные вопросы