为什么将表列类型从数字更改为字符串时,php迁移失败

8 浏览
0 Comments

为什么将表列类型从数字更改为字符串时,php迁移失败

我是PHP和Laravel平台的新手,需要你的帮助来解决在运行迁移任务时出现的PDOException,该任务是将表格列的类型从数字更改为字符串。

...
public function up()
{
    Schema::table('BuildTable', function (Blueprint $table) {
       $table->string('snapshot_id')->change();
    });
}
....

在运行迁移任务时出现了PDOException错误。

Doctrine\DBAL\Driver\PDOException::("SQLSTATE[0A000]: Feature not supported: 7 ERROR:  unimplemented: type conversion from INT8 to VARCHAR(255) requires overwriting existing values which is not yet implemented
HINT:  You have attempted to use a feature that is not yet implemented.

现有的表结构是使用以下代码创建的:

      
Schema::create(
    $this->tablename,
    function (Blueprint $table) {
        $table->increments('id');
        $table->integer('account_id')->unsigned();
        $table->integer('snapshot_id')->unsigned();
        $table->timestamps(6);
        $table->softDeletes('deleted_at', 6)->default(null);
    }
);

现有表格中已经有了snapshot_id的数据。

PHP版本是7.3.20,运行在Linux Mint操作系统上,数据库是CockroachDB。

0
0 Comments

为什么将表列类型从数字更改为字符串时,php迁移失败?

在CockroachDB v20.2中,这个功能将在今年晚些时候试验性地推出。如果您愿意,可以使用具有此功能的alpha版本(v20.2.0-alpha.2)进行测试。请参阅发布说明。要使用它,您需要设置以下会话变量:SET enable_experimental_alter_column_type_general = true;

原因:在进行php迁移时,将表列类型从数字更改为字符串可能会导致失败。这可能是因为CockroachDB的早期版本不支持此操作。

解决方法:如果您想测试此功能,可以尝试使用CockroachDB v20.2的alpha版本(v20.2.0-alpha.2)。在使用之前,确保将会话变量enable_experimental_alter_column_type_general设置为true。这样,您将能够更改表列类型从数字到字符串。

请注意,此功能仍处于试验阶段,可能会导致其他问题或不稳定性。因此,建议在生产环境中慎重使用。

以上是关于为什么在将表列类型从数字更改为字符串时php迁移失败的原因和解决方法。希望对您有帮助!

0