1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel phpUnit sqlite 'no such function : Field' エラー解決した時のメモ

Posted at

前提

Laravel, phpunitで、sqliteのインメモリー機能を使ってテストを書いてる時に、以下sql構文エラーに遭遇した

SQLSTATE[HY000]: General error: 1 no such function: FIELD (SQL: select * from ... by FIELD(id, 1) limit 10000 offset 0)

運用、開発はmysqlを使っていて、テスト時のみsqliteに切り替えるよう実装していた。
試した範囲では、FIELD関数のみエラーが出ていた。

結論

FIELD関数はmysqlの機能のためsqliteではエラーになってしまうようだった。
そのため、使用するDBによってFIELDを使う部分を条件分岐させることでとりあえず解決した。

if (env('DB_CONNECTION') === 'mysql') {
  $this->query->orderByRaw('FIELD(' ...')');
}

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?