我正在尝试更改我的当前表,并且可以在我的迁移文件中使用SQL查询来做到这一点,如下所示:
<?php
public function up()
{
Schema::table('xyz', function (Blueprint $table) {
DB::statement('ALTER TABLE mydatabase.xyz CHANGE funding_needed funding_needed decimal(10, 2) NOT NULL DEFAULT 0.00 ');
DB::statement('ALTER TABLE mydatabase.xyz CHANGE funding_received funding_received decimal(10, 2) NOT NULL DEFAULT 0.00 ');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('xyz', function (Blueprint $table) {
DB::statement('ALTER TABLE mydatabase.xyz CHANGE funding_needed funding_needed varchar(191) NOT NULL ');
DB::statement('ALTER TABLE mydatabase.xyz CHANGE funding_received funding_received varchar(191) NOT NULL DEFAULT 0');
});
}
但是如果我这样做,我会收到一个错误:
<?php
public function up()
{
Schema::table('xyz', function (Blueprint $table) {
$table->decimal('funding_needed', 10, 2)->nullable(false)->default(0.00)->change();
$table->decimal('funding_received', 10, 2)->nullable(false)->default(0.00)->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('xyz', function (Blueprint $table) {
$table->string('funding_needed', 191)->nullable(false)->default(false)->change();
$table->string('funding_received', 191)->nullable(false)->default(0)->change();
});
}
错误:
语法错误或访问冲突: 1064 您的 SQL 语法有错误;检查与您的MySQL服务器版本相对应的手册,以获取在“字符集utf8mb4默认”0“附近使用的正确语法,而不是空排序,在第1行更改”(SQL:更改表xyz更改funding_needed funding_needed数字(10,2)字符集utf8mb4默认“0”不是空排序,更改funding_received funding_received数字(10, 2) 字符集 utf8mb4 默认“0”不为空排序规则
utf8mb4_unicode_ciutf8mb4_unicode_ciutf8mb4_unicode_ci)
我想用第二种方式来做,因为在生产中运行它。我不想修改生产迁移以匹配我的生产数据库。
九州编程
30秒到达战场
慕田峪9158850
随时随地看视频慕课网APP