【问题标题】:Getting error [Doctrine\DBAL\DBALException] Unknown database type point requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it [duplicate]出现错误 [Doctrine\DBAL\DBALException] 请求未知数据库类型点,Doctrine\DBAL\Platforms\MySQL57Platform 可能不支持它[重复]
【发布时间】:2018-05-09 03:24:15
【问题描述】:

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

当我尝试这样做时,会出现以下错误。谁能帮我解决这个问题?

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

这是我的迁移文件。

第一次迁移是为了创建一个表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');

}

第二次迁移是为了更新列大小

public function up()
{
 Schema::table('abc', function (Blueprint $table){
     $table->string('mobile', 20)->nullable()->change();
 });
}

【问题讨论】:

  • 可能是 Point 不被 laravel 支持检查这个答案到 fix this issue
  • 是的,Point 是这里的问题。
  • 如果我使用Illuminate\Support\Facades\DB::statement('ALTER TABLE abc MODIFY mobile VARCHAR(20)');,那么它对我来说很好。但我不想使用这个解决方案。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    请尝试在vendor\infyomlabs\laravel-generator\src\Utils\TableFieldsGenerator.php下面添加

    $platform = $this->schemaManager->getDatabasePlatform();
    $platform->registerDoctrineTypeMapping('bit', 'boolean');
    

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

    【讨论】:

    • 一般不建议修改vendor目录下的文件,因为用composer更新库时会被删除。
    • 不要遵循这个。建议修改受版本控制的软件包是 100% 的坏主意。
    • 永远不要修改供应商文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2017-04-07
    • 1970-01-01
    • 2019-08-27
    • 2020-01-15
    相关资源
    最近更新 更多