[{"data":1,"prerenderedAt":578},["ShallowReactive",2],{"content-/nuxt-content-database-locked-issue":3,"all-pages-for-dir":555,"related-/nuxt-content-database-locked-issue":556,"og-image-/nuxt-content-database-locked-issue":577},{"id":4,"title":5,"body":6,"category":538,"concepts":538,"description":539,"extension":540,"meta":541,"navigation":542,"ogImage":538,"path":543,"project_name":538,"published":544,"publishedAt":545,"seo":546,"source":538,"stem":547,"tags":548,"todo":538,"unpublished":544,"updatedAt":538,"__hash__":554},"pages/2025-11/2025-11-19/nuxt-content-database-locked-issue.md","Nuxt Content「database is locked」エラーの原因と対処法",{"type":7,"value":8,"toc":524},"minimark",[9,14,18,29,33,36,44,60,71,74,97,100,105,138,145,149,155,271,275,347,351,358,427,430,433,448,451,478,481,507,510,520],[10,11,13],"h1",{"id":12},"nuxt-contentdatabase-is-lockedエラーについて","Nuxt Content「database is locked」エラーについて",[15,16,17],"h2",{"id":17},"発生状況",[19,20,25],"pre",{"className":21,"code":23,"language":24},[22],"language-text","ERROR  [unhandledRejection] database is locked\nat StatementWrapper.run (.../db0/dist/connectors/node-sqlite.mjs:44:33)\nat deleteDevelopmentCache (.../node_modules/@nuxt/content/dist/module.mjs:375:63)\n","text",[26,27,23],"code",{"__ignoreMap":28},"",[30,31,32],"p",{},"ファイル名変更やファイル保存時に、@nuxt/contentが開発キャッシュを更新する際に発生する。",[15,34,35],{"id":35},"原因",[30,37,38,39,43],{},"Nuxt Contentは開発環境でSQLiteデータベースを使用してコンテンツをインデックス化しています。\nファイル変更を検知した際に、以下の処理が",[40,41,42],"strong",{},"ほぼ同時","に実行されることがあります：",[45,46,47,54],"ol",{},[48,49,50,53],"li",{},[26,51,52],{},"deleteDevelopmentCache"," - 古いキャッシュを削除",[48,55,56,59],{},[26,57,58],{},"insertDevelopmentCache"," - 新しいキャッシュを挿入",[30,61,62,63,66,67,70],{},"SQLiteはデフォルトで",[40,64,65],{},"1つの書き込み処理のみ","を許可するため、複数の書き込みが競合すると",[26,68,69],{},"SQLITE_BUSY (database is locked)","エラーが発生します。",[30,72,73],{},"特に以下の操作で発生しやすい：",[75,76,77,88,91,94],"ul",{},[48,78,79,80,83,84,87],{},"ファイル名の変更（",[26,81,82],{},"aaa.md"," → ",[26,85,86],{},"nuxt3-drawio-complete-guide.md","）",[48,89,90],{},"複数ファイルの同時保存",[48,92,93],{},"フロントマターの追加・編集",[48,95,96],{},"Gitでのファイル切り替え（checkout時など）",[15,98,99],{"id":99},"対処法",[101,102,104],"h3",{"id":103},"_1-再起動現状の対処","1. 再起動（現状の対処）",[19,106,110],{"className":107,"code":108,"language":109,"meta":28,"style":28},"language-bash shiki shiki-themes vitesse-light vitesse-light","# 開発サーバーを再起動\nCtrl+C\npnpm dev\n","bash",[26,111,112,121,128],{"__ignoreMap":28},[113,114,117],"span",{"class":115,"line":116},"line",1,[113,118,120],{"class":119},"sxvE3","# 開発サーバーを再起動\n",[113,122,124],{"class":115,"line":123},2,[113,125,127],{"class":126},"senZ8","Ctrl+C\n",[113,129,131,134],{"class":115,"line":130},3,[113,132,133],{"class":126},"pnpm",[113,135,137],{"class":136},"sdGka"," dev\n",[30,139,140,141,144],{},"→ ",[40,142,143],{},"これで問題なく動作する","（ユーザー確認済み）",[101,146,148],{"id":147},"_2-sqliteのタイムアウト設定を調整根本対策","2. SQLiteのタイムアウト設定を調整（根本対策）",[30,150,151,154],{},[26,152,153],{},"nuxt.config.ts","に以下を追加：",[19,156,160],{"className":157,"code":158,"language":159,"meta":28,"style":28},"language-typescript shiki shiki-themes vitesse-light vitesse-light","export default defineNuxtConfig({\n  content: {\n    database: {\n      type: 'sqlite',\n      // SQLiteの待機時間を延長（ミリ秒）\n      options: {\n        busyTimeout: 10000, // 10秒\n      }\n    }\n  }\n})\n","typescript",[26,161,162,178,187,194,215,221,229,247,253,259,265],{"__ignoreMap":28},[113,163,164,168,171,174],{"class":115,"line":116},[113,165,167],{"class":166},"sHkkW","export",[113,169,170],{"class":166}," default",[113,172,173],{"class":126}," defineNuxtConfig",[113,175,177],{"class":176},"shFtX","({\n",[113,179,180,184],{"class":115,"line":123},[113,181,183],{"class":182},"sz8Xr","  content",[113,185,186],{"class":176},": {\n",[113,188,189,192],{"class":115,"line":130},[113,190,191],{"class":182},"    database",[113,193,186],{"class":176},[113,195,197,200,203,207,210,212],{"class":115,"line":196},4,[113,198,199],{"class":182},"      type",[113,201,202],{"class":176},": ",[113,204,206],{"class":205},"sMJiu","'",[113,208,209],{"class":136},"sqlite",[113,211,206],{"class":205},[113,213,214],{"class":176},",\n",[113,216,218],{"class":115,"line":217},5,[113,219,220],{"class":119},"      // SQLiteの待機時間を延長（ミリ秒）\n",[113,222,224,227],{"class":115,"line":223},6,[113,225,226],{"class":182},"      options",[113,228,186],{"class":176},[113,230,232,235,237,241,244],{"class":115,"line":231},7,[113,233,234],{"class":182},"        busyTimeout",[113,236,202],{"class":176},[113,238,240],{"class":239},"sM54T","10000",[113,242,243],{"class":176},", ",[113,245,246],{"class":119},"// 10秒\n",[113,248,250],{"class":115,"line":249},8,[113,251,252],{"class":176},"      }\n",[113,254,256],{"class":115,"line":255},9,[113,257,258],{"class":176},"    }\n",[113,260,262],{"class":115,"line":261},10,[113,263,264],{"class":176},"  }\n",[113,266,268],{"class":115,"line":267},11,[113,269,270],{"class":176},"})\n",[101,272,274],{"id":273},"_3-ファイル監視の間隔を調整","3. ファイル監視の間隔を調整",[19,276,278],{"className":157,"code":277,"language":159,"meta":28,"style":28},"export default defineNuxtConfig({\n  content: {\n    watch: {\n      enabled: true,\n      // 監視のdebounce時間を延長\n      debounce: 1000, // 1秒\n    }\n  }\n})\n",[26,279,280,290,296,303,315,320,335,339,343],{"__ignoreMap":28},[113,281,282,284,286,288],{"class":115,"line":116},[113,283,167],{"class":166},[113,285,170],{"class":166},[113,287,173],{"class":126},[113,289,177],{"class":176},[113,291,292,294],{"class":115,"line":123},[113,293,183],{"class":182},[113,295,186],{"class":176},[113,297,298,301],{"class":115,"line":130},[113,299,300],{"class":182},"    watch",[113,302,186],{"class":176},[113,304,305,308,310,313],{"class":115,"line":196},[113,306,307],{"class":182},"      enabled",[113,309,202],{"class":176},[113,311,312],{"class":166},"true",[113,314,214],{"class":176},[113,316,317],{"class":115,"line":217},[113,318,319],{"class":119},"      // 監視のdebounce時間を延長\n",[113,321,322,325,327,330,332],{"class":115,"line":223},[113,323,324],{"class":182},"      debounce",[113,326,202],{"class":176},[113,328,329],{"class":239},"1000",[113,331,243],{"class":176},[113,333,334],{"class":119},"// 1秒\n",[113,336,337],{"class":115,"line":231},[113,338,258],{"class":176},[113,340,341],{"class":115,"line":249},[113,342,264],{"class":176},[113,344,345],{"class":115,"line":255},[113,346,270],{"class":176},[101,348,350],{"id":349},"_4-cloudflare-d1への切り替え本番向け","4. Cloudflare D1への切り替え（本番向け）",[30,352,353,354,357],{},"既に",[26,355,356],{},"wrangler.toml","でD1設定がある場合、開発環境でも使用可能：",[19,359,361],{"className":157,"code":360,"language":159,"meta":28,"style":28},"export default defineNuxtConfig({\n  content: {\n    database: {\n      type: 'd1',\n      binding: 'DB'\n    }\n  }\n})\n",[26,362,363,373,379,385,400,415,419,423],{"__ignoreMap":28},[113,364,365,367,369,371],{"class":115,"line":116},[113,366,167],{"class":166},[113,368,170],{"class":166},[113,370,173],{"class":126},[113,372,177],{"class":176},[113,374,375,377],{"class":115,"line":123},[113,376,183],{"class":182},[113,378,186],{"class":176},[113,380,381,383],{"class":115,"line":130},[113,382,191],{"class":182},[113,384,186],{"class":176},[113,386,387,389,391,393,396,398],{"class":115,"line":196},[113,388,199],{"class":182},[113,390,202],{"class":176},[113,392,206],{"class":205},[113,394,395],{"class":136},"d1",[113,397,206],{"class":205},[113,399,214],{"class":176},[113,401,402,405,407,409,412],{"class":115,"line":217},[113,403,404],{"class":182},"      binding",[113,406,202],{"class":176},[113,408,206],{"class":205},[113,410,411],{"class":136},"DB",[113,413,414],{"class":205},"'\n",[113,416,417],{"class":115,"line":223},[113,418,258],{"class":176},[113,420,421],{"class":115,"line":231},[113,422,264],{"class":176},[113,424,425],{"class":115,"line":249},[113,426,270],{"class":176},[15,428,429],{"id":429},"なぜ再起動で直るのか",[30,431,432],{},"再起動により：",[45,434,435,442,445],{},[48,436,437,438,441],{},"SQLiteデータベースファイル（",[26,439,440],{},".nuxt/content-cache.db","）のロックが解放される",[48,443,444],{},"ファイルシステムウォッチャーがリセットされる",[48,446,447],{},"保留中の書き込みキューがクリアされる",[15,449,450],{"id":450},"予防策",[45,452,453,459,465],{},[48,454,455,458],{},[40,456,457],{},"大量のファイル操作を避ける","：複数ファイルの一括変更はgit操作で行い、開発サーバーを停止してから実行",[48,460,461,464],{},[40,462,463],{},"ファイル保存の間隔を空ける","：エディタの自動保存間隔を1秒以上に設定",[48,466,467,473,474,477],{},[40,468,469,472],{},[26,470,471],{},".nuxt","ディレクトリを定期的にクリーン","：",[26,475,476],{},"rm -rf .nuxt","で古いキャッシュを削除",[15,479,480],{"id":480},"参考情報",[75,482,483,492,499],{},[48,484,485,486],{},"Nuxt Content database設定: ",[487,488,489],"a",{"href":489,"rel":490},"https://content.nuxt.com/get-started/configuration#database",[491],"nofollow",[48,493,494,495],{},"SQLite BUSY エラー: ",[487,496,497],{"href":497,"rel":498},"https://www.sqlite.org/rescode.html#busy",[491],[48,500,501,502,506],{},"関連Issue: ",[487,503,504],{"href":504,"rel":505},"https://github.com/nuxt/content/issues",[491]," (database locked で検索)",[15,508,509],{"id":509},"結論",[30,511,512,515,516,519],{},[40,513,514],{},"現状は再起動で問題なし","である。より安定させたい場合は",[26,517,518],{},"busyTimeout","の調整を検討すべきである。",[521,522,523],"style",{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .sz8Xr, html code.shiki .sz8Xr{--shiki-default:#998418;--shiki-dark:#998418}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html pre.shiki code .sM54T, html code.shiki .sM54T{--shiki-default:#2F798A;--shiki-dark:#2F798A}",{"title":28,"searchDepth":123,"depth":123,"links":525},[526,527,528,534,535,536,537],{"id":17,"depth":123,"text":17},{"id":35,"depth":123,"text":35},{"id":99,"depth":123,"text":99,"children":529},[530,531,532,533],{"id":103,"depth":130,"text":104},{"id":147,"depth":130,"text":148},{"id":273,"depth":130,"text":274},{"id":349,"depth":130,"text":350},{"id":429,"depth":123,"text":429},{"id":450,"depth":123,"text":450},{"id":480,"depth":123,"text":480},{"id":509,"depth":123,"text":509},null,"ファイル変更時に発生するSQLite database lockedエラーの原因と解決策","md",{},true,"/nuxt-content-database-locked-issue",false,"2025-11-19T00:00:00.000Z",{"title":5,"description":539},"2025-11/2025-11-19/nuxt-content-database-locked-issue",[549,550,551,552,553],"Nuxt Content","SQLite","troubleshooting","database","development","3b4cWdnUkfkav6RVS0FfUr39ilQJ5hYy2_d2aZgY8HU",[],[557,561,565,569,573],{"title":558,"path":559,"publishedAt":560},"財務データ生成スクリプトの企業数差異分析","/financial-data-company-diff-analysis","2025-12-19T00:00:00.000Z",{"title":562,"path":563,"publishedAt":564},"Nuxt Content: SQLite フィールドマッピング仕様","/nuxt-content-sqlite-field-mapping","2025-10-04T00:00:00.000Z",{"title":566,"path":567,"publishedAt":568},"dev サーバーを止めずにデプロイできるよう、Nuxt のビルド出力先と Content DB を分けた","/deploy-while-dev-running","2026-07-31T00:00:00.000Z",{"title":570,"path":571,"publishedAt":572},"散らばったnote戦略の資料をローカル限定ページに集約し、PNGしかないロゴをSVG化した","/note-strategy-hub-and-brand-assets","2026-07-29T00:00:00.000Z",{"title":574,"path":575,"publishedAt":576},"NVIDIAのオープンウェイト共同声明を全文対訳で記事化した日 — 訳語「公開」の衝突とSVG図解4枚","/open-weights-statement-bilingual-article","2026-07-25T00:00:00.000Z","https://log.eurekapu.com/og/blog/nuxt-content-database-locked-issue.png?v=2025-11-19T00%3A00%3A00.000Z&title=Nuxt%20Content%E3%80%8Cdatabase%20is%20locked%E3%80%8D%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E5%8E%9F%E5%9B%A0%E3%81%A8%E5%AF%BE%E5%87%A6%E6%B3%95&author=Kei%20Komatsu&sig=3d6015c17c713ebf",1785654662411]