代码之家  ›  专栏  ›  技术社区  ›  Carol.Kar

迁移时将laravel mysql更改为utf8mb4

  •  0
  • Carol.Kar  · 技术社区  · 5 年前

    我使用Laravel 5.7,我想将我当前的mysqldb更改为utf8mb4。

    在下面找到我的迁移:

    <?php
    
    use Illuminate\Support\Facades\Schema;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;
    
    class CreateTickDataTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('tick_data', function (Blueprint $table) {
                $table->increments('id');
                $table->unsignedInteger('coin_basis_id')->nullable();
    
                //...
    
                $table->timestamp('open_time')->nullable();
                $table->timestamp('close_time')->nullable();
                $table->timestamp('exchange_timestamp');
                $table->timestamps();
            });
        }
    

    }

    基本上我想 ALTER 表在创建之后,但是在添加 DB::unprepared('ALTER TABLE tick_data CONVERT TO CHARACTER SET utf8mb4'); up() 功能:

    默认字符集u tf8mb4 collate'u tf8mb4_unicode_ci')

    什么时候是运行此语句的最佳位置?

    谢谢你的回复!

    1 回复  |  直到 5 年前
        1
  •  -1
  •   Felipe Castagnaro de Carvalho    5 年前

    您可以尝试在创建表后修改它:

    Schema::table('tick_data', function (Blueprint $table) {
        $table->string('table_name') // Name of the colum
                    ->nullable() // must not fill
                    ->after('exchange_timestamp'); // after the column "exchange_timestamp"
    });