我的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 :(得分:0)
问题是你的表不是空的,当前的行将被赋予NULL作为默认值,但不允许该列为NULL。
您应该可以通过设置默认值来绕过它。
来自Oracle文档:
但是,可以将具有NOT NULL约束的列添加到 现有表格,如果你给出一个默认值;否则,例外是 执行ALTER TABLE语句时抛出。
尝试:
$table->integer('id_rek')->default($value)->nullable();