无法更改Laravel表列类型

时间:2019-11-12 11:54:50

标签: mysql laravel xampp mariadb

我无法执行migration:fresh。

命令无法从以下位置更改表列

$table->string('language_id')->default('')->length(255);

收件人:

$table->integer('language_id')->unsigned()->default(1)->change();


我收到的错误:

  

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;请参见语法。检查手册      对应于您的MariaDB服务器版本,以在'CHARACTER SET utf8mb4 DEFAULT 1 NOT N附近使用正确的语法     第1行的ULL COLLATE utf8mb4_unicode_ci'(SQL:ALTER TABLE用户更改language_id language_id INT UNSIGNED CHA     RACTER SET utf8mb4默认1 NOT NULL COLLATE utf8mb4_unicode_ci

任何帮助/提示都将不胜感激。

3 个答案:

答案 0 :(得分:2)

如果标准解决方案不起作用。您可以尝试以下方法:

public function up()
{
    DB::statement('ALTER TABLE mytable MODIFY mycolumn  INTEGER;');
}

public function down()
{
    DB::statement('ALTER TABLE mytable MODIFY mycolumn STRING;');
}

答案 1 :(得分:0)

取决于Laravel文档:

  

注意:更改列之前,请确保将doctrine / dbal依赖项添加到composer.json文件中。

尝试一下

< font size =1> ' [example] < /font>

答案 2 :(得分:0)

需要学说/ dbal

composer require doctrine/dbal

写一个新的迁移并写这个

 public function up()
    {
        Schema::table('table_name', function (Blueprint $table) {
            $table->integer('language_id')->change();
        });
    }

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