zoukankan      html  css  js  c++  java
  • Laravel 中更新 Enum 类型的字段异常

    当用 Laravel 的数据迁移来更新 Enum 类型的字段时,比如:修改字段名

    Schema::table('table_name', function (Blueprint $table) {
      $table->renameColumn('from', 'to');
    });

    当执行迁移命令的时候:

    php artisan migrate

    会报异常:

    DoctrineDBALDBALException:Unknown database type enum requested, 
    DoctrineDBALPlatformsMySQL57Platform may not support it.

    当遇到这个问题的时候,首先确保已经安装了扩展 doctrine/dbal ,因为 Laravel 官方文档已经提到:

    在修改字段之前,请确保将 doctrine/dbal 依赖添加到 composer.json 文件中。Doctrine DBAL 库用于确定字段的当前状态, 并创建对该字段进行指定调整所需的 SQL 查询

    如果没有安装此扩展,请执行命令安装:

    composer require doctrine/dbal

    然后修改迁移文件

    DB::getDoctrineSchemaManager()
        ->getDatabasePlatform()
        ->registerDoctrineTypeMapping('enum', 'string');
    
    Schema::table('pattern_column_orders', function (Blueprint $table) {
        $table->renameColumn('payment', 'payment_method');
    });

    这时候再执行迁移命令发现已经可以成功执行了

  • 相关阅读:
    运算符重载
    责任链模式
    MFC一些常见面试问题
    浅拷贝&深拷贝
    下雨的效果
    本地时间使用与倒计时
    钟表效果
    一种水纹波浪效果
    一个相册效果
    在Flash中管理鼠标右键
  • 原文地址:https://www.cnblogs.com/songlen/p/13305306.html
Copyright © 2011-2022 走看看