Ошибка сброса / обновления Laravel ORA-01758 в базе данных Oracle

Моя миграция 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 изначально обнуляется в базе данных.

Что пропустили из моей миграции?

0

Решение

Проблема в том, что ваша таблица не пуста, и текущим строкам будет присвоено значение NULL в качестве значения по умолчанию, но столбцу не разрешено принимать значение NULL.

Вы должны быть в состоянии обойти это, установив значение по умолчанию.

Из документов Oracle:

Однако столбец с ограничением NOT NULL может быть добавлен к
существующая таблица, если вы дадите значение по умолчанию; в противном случае исключение
бросается при выполнении инструкции ALTER TABLE.

Пытаться:

$table->integer('id_rek')->default($value)->nullable();

От: https://laravel.com/docs/5.5/migrations

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector