Изменение столбца перечисления через оператор DB :: - PullRequest
0 голосов
/ 08 июня 2018

У меня есть столбец типа enum Я хочу изменить его на тип varchar, но возникает ошибка из-за неправильного синтаксиса sql, пожалуйста, каково решение

Это создание таблицыкод миграции

 class CreateCurrenciesTable extends Migration
{
    /**
   * Run the migrations.
   *
   * @return void
   */
 public function up()
 {
    $symbols = ['₦', '$', '£'];
    Schema::create('currencies', function (Blueprint $table) use($symbols) {
        $table->increments('id');
        $table->string('name', 50);
        $table->string('code', 5);
        $table->enum('symbol', $symbols);
        $table->timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{   
    DB::statement('SET FOREIGN_KEY_CHECKS = 0');
    Schema::dropIfExists('currencies');
    DB::statement('SET FOREIGN_KEY_CHECKS = 1');
}

Это код миграции, который я хочу использовать для изменения типа столбца, но продолжаю получать ошибку

class AddSymbolToImagesTable extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('images', function (Blueprint $table) {
       DB::statement('ALTER TABLE images ALTER COLUMN symbol VARCHAR(200)');
       // $table->text('symbol')->change();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('images', function (Blueprint $table) {
       // $symbols = ['₦', '$', '£'];
       // $table->enum('symbol', $symbols)->change();
        DB::statement('ALTER TABLE images ALTER COLUMN symbol enum ');
    });
}
}

1 Ответ

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

Это на самом деле не имеет никакого отношения к Laravel, и вы должны также включить ошибку в следующий раз.

Чтобы изменить тип столбца, вы можете использовать MODIFY или MODIFY COLUMN.

Так что это будет работать: ALTER TABLE images MODIFY symbol varchar(200)

Есть несколько, чтобы изменить имя столбца, как вы можете видеть в документах здесь: https://dev.mysql.com/doc/refman/8.0/en/alter-table.html#alter-table-redefine-column

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