Моя миграция Laravel продолжает получать ошибку, когда сброс / обновление:
ORA-01758: table must be empty to add mandatory (NOT NULL)
Миграция выглядит следующим образом:
public function up()
{
Schema::table('kasbank', function (Blueprint $table) {
$table->dropColumn('name_bn');
$table->dropColumn('id_rekon');
$table->string('name_kb')->after('kode');
$table->integer('id_rek')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('kasbank', function (Blueprint $table) {
$table->dropColumn('id_rek');
$table->dropColumn('name_kb');
$table->integer('id_rekon')->nullable();
$table->string('name_bn')->after('kode');
});
}
К вашему сведению, столбец id_rekon
изначально обнуляется в базе данных.
Что пропустили из моей миграции?
Проблема в том, что ваша таблица не пуста, и текущим строкам будет присвоено значение NULL в качестве значения по умолчанию, но столбцу не разрешено принимать значение NULL.
Вы должны быть в состоянии обойти это, установив значение по умолчанию.
Из документов Oracle:
Однако столбец с ограничением NOT NULL может быть добавлен к
существующая таблица, если вы дадите значение по умолчанию; в противном случае исключение
бросается при выполнении инструкции ALTER TABLE.
Пытаться:
$table->integer('id_rek')->default($value)->nullable();
Других решений пока нет …