SQLite Ожидает строку как столбец индекса при удалении столбца - PullRequest
0 голосов
/ 08 июня 2018
<?php

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

class RemoveConstructionDateToOrdersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        if (Schema::hasColumn('orders', 'construction_date')) {
            Schema::table('orders', function (Blueprint $table) {
                $table->dropColumn('construction_date');
            });
        }
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('orders', function (Blueprint $table) {
            $table->date('construction_date');
        });
    }
}

При переносе этой миграции laravel в базу данных sqlite я получаю следующую ошибку.

InvalidArgumentException: ожидание строки в виде столбца индекса

1 Ответ

0 голосов
/ 24 июня 2018

Я нашел, где проблема после нескольких часов возни.Похоже, пакет doctrine / dbal не может переименовать / обработать / удалить ?!Столбцы SQLite, у которых уже есть индекс

Поэтому я решил НЕ создавать индексы для столбцов, которые впоследствии будут переименованы в миграциях

Конечно, нам нужны индексычтобы существовать в MySQL, вот мое решение.

     Schema::table('comments', function (Blueprint $table) {
        $table->string('commentable_type', 100)->nullable()->after('id');

        //only add index if the connection is mysql
        if(config('DB_CONNECTION') === 'mysql'){
            $table->index('commentable_type');
        }
    });

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

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