Я пытаюсь изменить свою текущую таблицу и могу сделать это просто с помощью запроса 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 версии сервера, чтобы узнать правильный синтаксис для использования рядом с 'CHARACTER SET utf8mb4 DEFAULT' 0 'NOT NULL COLLATE utf8mb4_unicode_ci
, CHANGE' в строке 1 (SQL: ALTER TABLE xyz CHANGE funding_needed funding_needed funding_needed NUMERI C (10, 2) CHARACTER SET utf8mb4 DEFAULT '0' NOT NULL COLLATE utf8mb4_unicode_ci
, CHANGE funding_received funding_received NUMERI C (10, 2) CHARACTER SET utf8mb4 DEFAULT '0' NOT NULL COLLATE * 1012) 1013 *
Я хочу сделать это 2-ым способом из-за запуска в производство. Я не хочу изменять производственную миграцию, чтобы она соответствовала моей производственной базе данных.