首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel PHPUnit错误mysql全文索引

Laravel PHPUnit错误mysql全文索引
EN

Stack Overflow用户
提问于 2020-05-30 08:01:03
回答 1查看 897关注 0票数 0

添加全文索引后在Laravel中运行PHPUnit时出错

代码语言:javascript
复制
Doctrine\DBAL\Driver\PDOException: SQLSTATE[HY000]: General error: 1 near "name": syntax error

在调查之后,我添加的迁移所导致的错误

代码语言:javascript
复制
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddFulltextIndexToProductName extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        DB::statement('ALTER TABLE products ADD FULLTEXT fulltext_index(name)');
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::statement('DROP INDEX `fulltext_index`');
    }
}

如果删除该迁移代码,则测试将优雅地运行。

有人经历过这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-30 09:15:37

通常,Laravel测试在内存sqlite数据库中使用,迁移过程中的此语句将无法工作。您可以在这里检查如何创建sqlite全文索引:https://www.sqlitetutorial.net/sqlite-full-text-search/

因为Laravel不支持全文搜索,所以我假设您已经编写了自定义函数,它可能也不会在测试中工作。

为了克服这个问题,你可以:

  • 使用mysql进行测试(由于测试速度慢),
  • 使用存储库模式
  • 在测试时跳过迁移(如果您不测试搜索--您不需要它)。您可以与if(env('APP_ENV') === 'testing')
  • use laravel童子军查寻
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62099518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档