Oracle数据库上的Laravel迁移重置/刷新错误ORA-01758

时间:2017-10-30 06:20:52

标签: php database oracle laravel migration

我的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列最初在数据库中可以为空。

我的移民错过了哪些内容?

1 个答案:

答案 0 :(得分:0)

问题是你的表不是空的,当前的行将被赋予NULL作为默认值,但不允许该列为NULL。

您应该可以通过设置默认值来绕过它。

来自Oracle文档:

  

但是,可以将具有NOT NULL约束的列添加到   现有表格,如果你给出一个默认值;否则,例外是   执行ALTER TABLE语句时抛出。

尝试:

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

来自:https://laravel.com/docs/5.5/migrations