获取错误[Doctrine \ DBAL \ DBALException]请求未知的数据库类型点,Doctrine \ DBAL \ Platforms \ MySQL57Platform可能不支持它

时间:2017-11-25 09:57:39

标签: php laravel doctrine-orm doctrine laravel-5.4

我正在使用laravel,我刚刚添加了一个新的迁移来增加列大小。 第一个生成的表有一个名为latlong的{​​{1}}类型的列。 我无法修改任何列大小?

当我尝试这样做时,会给出以下错误。有人可以帮我这个吗?

  

[学说\ DBAL \ DBALException]
  请求未知的数据库类型点,   Doctrine \ DBAL \ Platforms \ MySQL57Platform可能不支持它。

这是我的迁移文件。

首次迁移是为了创建表Point

abc

第二次迁移是针对更新列大小

public function up()
{
 Schema::create('abc', function (Blueprint $table) {
        $table->increments('id');
        $table->string('first_name', 20);
        $table->string('last_name', 20);
        $table->string('street', 100);
        $table->string('city', 50)->nullable();
        $table->string('state', 50)->nullable();
        $table->string('postal_code', 15);
        $table->string('mobile', 10)->nullable();
        $table->timestamps();
        $table->softDeletes();
});   
Illuminate\Support\Facades\DB::statement('ALTER TABLE abc ADD latlong POINT');

}

3 个答案:

答案 0 :(得分:0)

请尝试在vendor\infyomlabs\laravel-generator\src\Utils\TableFieldsGenerator.php

中添加以下内容
$platform = $this->schemaManager->getDatabasePlatform();
$platform->registerDoctrineTypeMapping('bit', 'boolean');
  

///添加新行$ platform-> registerDoctrineTypeMapping('point',   'string');

答案 1 :(得分:0)

解决方案类似于@AnhDam建议。但是,您永远不要更改作曲家供应商目录中的文件。在Insead的迁移中,添加以下功能:

public function __construct()
{
    \Illuminate\Support\Facades\DB::getDoctrineSchemaManager()
       ->getDatabasePlatform()->registerDoctrineTypeMapping('point', 'string');
}

答案 2 :(得分:-1)

修改列 先决条件

  

在修改列之前,请务必添加doctrine / dbal依赖项   到您的composer.json文件。 Doctrine DBAL库用于   确定列的当前状态并创建SQL查询   需要对列进行指定的调整:

composer require doctrine/dbal

来自Laravel Doc

您需要先安装doctrine/dbal

更新

像这样使用来修改列

Schema::table('table_name', function ($table) {
  $table->string('mobile', 20)->change();
}