Миграция не ставит "уникальный" на моем столе - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь изменить существующую миграцию следующим образом:

c:\wamp64\www\urlshortner>php artisan make:migration add_unique_to_shortened_on_urls_table_--table=urls

Я добавляю этот код в файл миграции:

   public function up()
{
    Schema::table('urls', function (Blueprint $table) {
        $table->unique('shortned');
    });
}

Я выполнил команду PHP artisan migrate, но поле не "уникально" на MySQL

Можете ли вы мне помочь, пожалуйста?

  Illuminate\Database\QueryException  : SQLSTATE[42S21]: Column already exists: 1060 Nom du champ 'shortned' déjà utilisé (SQL: alter table `urls` add `shortned` varchar(255) not null)

Это ошибка, которую я получил

Ответы [ 3 ]

2 голосов
/ 08 января 2020

Прежде всего установите doctrine/dbal зависимость. для этого запуска composer require doctrine/dbal. Затем измените миграцию как

$table->string('shortned')->unique()->charset('')->collation('')->change();

, затем запустите php artisan migrate

1 голос
/ 08 января 2020

Это должно быть

$table->string('shortned')->unique();
0 голосов
/ 08 января 2020

Я думаю, у вас уже есть данные с повторяющимися значениями в вашей таблице shortned. поэтому сначала удалите все данные из shortned, используя Delete from shortned;. и после этого запустите миграцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...