simple-web-system technology

Webに関する技術をシンプルに扱うブログ

Cloudflare D1メモ:local と remote の違いにハマった話

最近 Cloudflare D1 を触ってて、「あれ?データが反映されない?」みたいなことが起きた。 調べてみたら、wrangler 経由で D1 にアクセスするときに “local” と “remote” という概念があることを知った。

最初は「どうせ全部 Cloudflare 上(= remote)につながってるでしょ」と思っていたけど、 実際はそうじゃなくて、デフォルトでは local(手元環境のsqlite)に接続される


wrangler.jsonc の設定ポイント

D1 の接続設定を wrangler.jsonc に書くとき、例えばこんな感じで remote: true を入れると 本番(Cloudflare 上の D1 データベース)につながる。

{
  "d1_databases": [
    {
      "binding": "DB",
      "database_name": "my-database",
      "database_id": "xxxx-xxxx-xxxx",
      "remote": true
    }
  ]
}

これを入れないと、wrangler d1 コマンドを実行しても local DB にアクセスしてしまう。 ずっと「なんでデータが反映されないんだ…?」って悩んでたのはこのせいだった。


個人開発なら remote でいいや

正直、local で動かすメリットはそこまで大きくないし、 個人開発なら素直に remote に接続しておくのが楽そう。 local / remote を切り替えるたびに混乱するのも避けたいし。

というわけで、

remote: true 入れとこう。

これで解決。


📝 まとめ

  • D1 は localremote の2種類の接続モードがある
  • デフォルトは local
  • wrangler.jsonc"remote": true を追加すると Cloudflare 上のDBに接続される