无法更改 Laravel table 列类型
Can't change Laravel table column type
我无法执行 migrate:fresh。
命令在更改 table 列时失败:
$table->string('language_id')->default('')->length(255);
至:
$table->integer('language_id')->unsigned()->default(1)->change();
我遇到的错误:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use near 'CHARACTER SET utf8mb4 DEFAULT 1 NOT N
ULL COLLATE utf8mb4_unicode_ci
' at line 1 (SQL: ALTER TABLE users CHANGE language_id language_id INT UNSIGNED CHA
RACTER SET utf8mb4 DEFAULT 1 NOT NULL COLLATE utf8mb4_unicode_ci
)
任何help/hints将不胜感激。
取决于 Laravel 文档:
Note: Before changing a column, be sure to add the doctrine/dbal dependency to your composer.json file.
试试这个
Schema::table('your_table_name', function (Blueprint $table) {
$table->unsignedInteger('language_id')->default(1);
});
如果标准溶液不起作用。你可以试试这个:
public function up()
{
DB::statement('ALTER TABLE mytable MODIFY mycolumn INTEGER;');
}
public function down()
{
DB::statement('ALTER TABLE mytable MODIFY mycolumn STRING;');
}
需要doctrine/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');
});
}
我无法执行 migrate:fresh。
命令在更改 table 列时失败:
$table->string('language_id')->default('')->length(255);
至:
$table->integer('language_id')->unsigned()->default(1)->change();
我遇到的错误:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CHARACTER SET utf8mb4 DEFAULT 1 NOT N ULL COLLATE
utf8mb4_unicode_ci
' at line 1 (SQL: ALTER TABLE users CHANGE language_id language_id INT UNSIGNED CHA RACTER SET utf8mb4 DEFAULT 1 NOT NULL COLLATEutf8mb4_unicode_ci
)
任何help/hints将不胜感激。
取决于 Laravel 文档:
Note: Before changing a column, be sure to add the doctrine/dbal dependency to your composer.json file.
试试这个
Schema::table('your_table_name', function (Blueprint $table) {
$table->unsignedInteger('language_id')->default(1);
});
如果标准溶液不起作用。你可以试试这个:
public function up()
{
DB::statement('ALTER TABLE mytable MODIFY mycolumn INTEGER;');
}
public function down()
{
DB::statement('ALTER TABLE mytable MODIFY mycolumn STRING;');
}
需要doctrine/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');
});
}