添加FULLTEXT索引后在Laravel中运行PHPUnit时出现错误
Doctrine\DBAL\Driver\PDOException: SQLSTATE[HY000]: General error: 1 near "name": syntax error
经过调查,我添加的迁移导致的错误
<?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`');
}
}
如果我删除迁移代码,测试将正常运行
有人遇到过这个问题吗?
2条答案
按热度按时间t2a7ltrp1#
通常Laravel测试都是在内存中使用sqlite数据库,这条语句在你的迁移中将不起作用。你可以在这里查看如何创建sqlite全文索引:https://www.sqlitetutorial.net/sqlite-full-text-search/
由于Laravel不支持开箱即用的全文搜索,我假设你已经编写了自定义函数,这可能也不会在测试中工作。
要解决此问题,您可以:
gijlo24d2#
对于条件索引,我建议检查DB驱动程序,而不是检查环境,例如: