## 事象
`sandbox.sql` を作成して以下のように入力しても補完が表示されない。
```sql
SELECT * FROM
```
- カレントディレクトリ配下に `db.sqlite3` は存在する
- [[Neovim]]起動時にエラーは発生しない
設定ファイルは以下。
`~/.config/sqls/config.yml`
```yaml
lowercaseKeywords: false
connections:
- alias: drf-sandbox
driver: sqlite3
dataSourceName: file:db.sqlite3?cache=shared&mode=memory
```
READMEを参考にした。
> ## DSN Examples
>
> ```
> file:test.db?cache=shared&mode=memory
> ```
> [GitHub - mattn/go-sqlite3: sqlite3 driver for go using database/sql](https://github.com/mattn/go-sqlite3?tab=readme-ov-file#dsn-examples)
`nvim/plugins/sqls.lua`
```lua
return {
"nanotee/sqls.nvim",
ft = "sql",
config = function()
vim.keymap.set({ "n", "i" }, "<C-CR>", "<cmd>SqlsExecuteQuery<CR>", { silent = true })
vim.keymap.set({ "x" }, "<C-CR>", ":'<,'>SqlsExecuteQuery<CR>", { silent = true })
vim.keymap.set({ "n", "i" }, "g<C-CR>", "<cmd>SqlsExecuteQueryVertical<CR>", { silent = true })
vim.keymap.set({ "x" }, "g<C-CR>", ":'<,'>SqlsExecuteQueryVertical<CR>", { silent = true })
end,
}
```
`nvim/after/lsp/sqls.lua`
```lua
return {}
```
### 環境
| 対象 | バージョン |
| ------------------ | ---------- |
| [[macOS]] | 15.7 |
| [[Neovim]] | 0.11.4 |
| [[sqls]] | `bfb7b40` |
| [[nvim-lspconfig]] | `107c245` |
## 原因
`dataSourceName` の `mode` に `memory` を指定しているから。
```yaml
dataSourceName: file:db.sqlite3?cache=shared&mode=memory
```
これはインメモリDBを使う設定であり、`file:` で指定した `./db.sqlite3` は利用されない。
## 解決方法
`mode` に以下いずれかを指定する。
| 値 | 意味 |
| --- | ------------------------------ |
| ro | read only (読み込み専用) |
| rw | read write (読み書き可) |
| rwc | read write create (読み書き + 作成可) |
> [Opening A New Database Connection](https://www.sqlite.org/c3ref/open.html)
SELECTだけなら `ro` でOK.
```diff
lowercaseKeywords: false
connections:
- alias: drf-sandbox
driver: sqlite3
- dataSourceName: file:db.sqlite3?cache=shared&mode=memory
+ dataSourceName: file:db.sqlite3?cache=shared&mode=ro
```