2017-02-19 21 views
2

Я бегу Laravel Framework version 5.2.45 и хочу перенести миграцию моей базы данных.Laravel Migrations - Столбец уже существует

У меня есть две миграции. Одним из них является стандарт 2014_10_12_100000_create_password_resets_table, который выходит из коробки, а другой один мой недавно созданный миграция 2017_02_19_172350_create_keywords_table:

<?php 

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

class CreateKeywordsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('keywords', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('keyword'); 
      $table->timestamps(); 
      $table->timestamps('published_at'); 

     }); 
    } 

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

Doing типичный php artisan migrate я (перед прокаткой назад):

root:~/workspace $ php artisan migrate:rollback 
Rolled back: 2014_10_12_100000_create_password_resets_table 
root:~/workspace $ php artisan migrate 


    [Illuminate\Database\QueryException]                             
    SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'created_at' (SQL: create table `keywords` (`id` int unsigned not null auto_incr 
    ement primary key, `keyword` varchar(255) not null, `created_at` timestamp null, `updated_at` timestamp null, `created_at` timestamp null, `updated 
    _at` timestamp null) default character set utf8 collate utf8_unicode_ci)                    



    [PDOException]                 
    SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'created_at' 


root:~/workspace $ 

Внутри база данных нет таблицы keywords.

enter image description here

Любые предложения, что я делаю неправильно?

Я ценю ваши ответы!

+0

Попробуйте ** композитор dump ** command, а затем попробуйте ** php aristan migration: refresh ** – zgabievi

ответ

5

$table->timestamps(); - это функция, которая всегда будет добавлять поля created_at и updated_at. В вашем случае вы добавляете их дважды.
Если вы хотите добавить другое поле метки времени, вы должны использовать функцию timestamp().

Таким образом, вы должны заменить строку на published_at со следующим (снимите с):

$table->timestamp('published_at'); 

список всех возможных типов столбцов можно найти в the documentation.

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

  • Нет связанных вопросов^_^