[英]Laravel migration reset/refresh error ORA-01758 on Oracle Database
我的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
列最初在數據庫中id_rekon
為空。
我的遷移遺漏了什么?
問題在於您的表不為空,並且當前行將被賦予NULL作為默認值,但是該列不允許為NULL。
您應該可以通過設置默認值來解決它。
從Oracle文檔:
但是,如果提供默認值,則可以將具有NOT NULL約束的列添加到現有表中。 否則,執行ALTER TABLE語句時將引發異常。
嘗試:
$table->integer('id_rek')->default($value)->nullable();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.