[{"data":1,"prerenderedAt":284},["ShallowReactive",2],{"navigation":3,"post-\u002Fposts\u002F2023\u002Fupgrade-ghost-5-0-to-5-42":20,"surroundPosts-\u002Fposts\u002F2023\u002Fupgrade-ghost-5-0-to-5-42":271},[4,8,12,16],{"title":5,"path":6,"stem":7},"首页","\u002F","00.index",{"title":9,"path":10,"stem":11},"文章","\u002Fposts","01.posts",{"title":13,"path":14,"stem":15},"动态","\u002Fmoments","02.moments",{"title":17,"path":18,"stem":19},"关于","\u002Fabout","09.about",{"id":21,"title":22,"body":23,"class":251,"cover":252,"coverSize":251,"date":253,"description":29,"draft":254,"extension":255,"hideComments":254,"location":251,"meta":256,"navigation":107,"path":257,"readingTime":258,"seo":263,"sitemap":264,"stem":265,"tags":266,"time":251,"weather":251,"__hash__":270},"posts\u002Fposts\u002F2023\u002F20230408.upgrade-ghost-5-0-to-5-42.md","Ghost 5.0 升级到 5.42",{"type":24,"value":25,"toc":249},"minimark",[26,30,197,207,210,239,242,245],[27,28,29],"p",{},"距离上次升级 Ghost 已经过去快 1 年了，上次是 Ghost 5.0 刚发布的时候升级的，这次直接把容器镜像版本改为最新的 5.42 时，报了个错：",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-log shiki shiki-themes material-theme-lighter github-light github-dark","ERROR connect ECONNREFUSED 127.0.0.1:3306\nconnect ECONNREFUSED 127.0.0.1:3306\n\n\"Unknown database error\"\n\nError ID:\n500\n\nError Code:\nECONNREFUSED\n\nError: connect ECONNREFUSED 127.0.0.1:3306\nat \u002Fvar\u002Flib\u002Fghost\u002Fversions\u002F5.42.0\u002Fnode_modules\u002Fknex-migrator\u002Flib\u002Fdatabase.js:57:19\nat TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)\n","log","",[38,39,40,78,102,109,115,120,129,135,140,148,154,159,185,191],"code",{"__ignoreMap":36},[41,42,45,49,53,57,60,63,65,67,69,72,75],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"s_sjI","ERROR",[41,50,52],{"class":51},"su5hD"," connect ECONNREFUSED ",[41,54,56],{"class":55},"s39Yj","127",[41,58,59],{"class":51},".",[41,61,62],{"class":55},"0",[41,64,59],{"class":51},[41,66,62],{"class":55},[41,68,59],{"class":51},[41,70,71],{"class":55},"1",[41,73,74],{"class":51},":",[41,76,77],{"class":55},"3306\n",[41,79,81,84,86,88,90,92,94,96,98,100],{"class":43,"line":80},2,[41,82,83],{"class":51},"connect ECONNREFUSED ",[41,85,56],{"class":55},[41,87,59],{"class":51},[41,89,62],{"class":55},[41,91,59],{"class":51},[41,93,62],{"class":55},[41,95,59],{"class":51},[41,97,71],{"class":55},[41,99,74],{"class":51},[41,101,77],{"class":55},[41,103,105],{"class":43,"line":104},3,[41,106,108],{"emptyLinePlaceholder":107},true,"\n",[41,110,112],{"class":43,"line":111},4,[41,113,114],{"class":47},"\"Unknown database error\"\n",[41,116,118],{"class":43,"line":117},5,[41,119,108],{"emptyLinePlaceholder":107},[41,121,123,126],{"class":43,"line":122},6,[41,124,125],{"class":47},"Error",[41,127,128],{"class":51}," ID:\n",[41,130,132],{"class":43,"line":131},7,[41,133,134],{"class":55},"500\n",[41,136,138],{"class":43,"line":137},8,[41,139,108],{"emptyLinePlaceholder":107},[41,141,143,145],{"class":43,"line":142},9,[41,144,125],{"class":47},[41,146,147],{"class":51}," Code:\n",[41,149,151],{"class":43,"line":150},10,[41,152,153],{"class":51},"ECONNREFUSED\n",[41,155,157],{"class":43,"line":156},11,[41,158,108],{"emptyLinePlaceholder":107},[41,160,162,164,167,169,171,173,175,177,179,181,183],{"class":43,"line":161},12,[41,163,125],{"class":47},[41,165,166],{"class":51},": connect ECONNREFUSED ",[41,168,56],{"class":55},[41,170,59],{"class":51},[41,172,62],{"class":55},[41,174,59],{"class":51},[41,176,62],{"class":55},[41,178,59],{"class":51},[41,180,71],{"class":55},[41,182,74],{"class":51},[41,184,77],{"class":55},[41,186,188],{"class":43,"line":187},13,[41,189,190],{"class":47},"at \u002Fvar\u002Flib\u002Fghost\u002Fversions\u002F5.42.0\u002Fnode_modules\u002Fknex-migrator\u002Flib\u002Fdatabase.js:57:19\n",[41,192,194],{"class":43,"line":193},14,[41,195,196],{"class":47},"at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)\n",[27,198,199,200],{},"重试了几次都不行，在 Ghost 的文档中找了半天也没发现从 5.0 升级到 5.42 中间有什么 breaking changes。最后从 Ghost 的 Docker 镜像维护仓库找到了相关的 Issue：",[201,202,206],"a",{"href":203,"rel":204},"https:\u002F\u002Fgithub.com\u002Fdocker-library\u002Fghost\u002Fpull\u002F323",[205],"nofollow","#323",[27,208,209],{},"大致原因主要是这样，Ghost 5.0 之后其实是有个 breaking change，就是原先数据库是支持 SQLite3 和 MySQL 5 的，在 5.0 之后，数据库只支持 MySQL 8 了，但是 SQLite3 在开发环境还是支持的。对应的 Docker 镜像，在 5.9 之前，都还是可以继续用之前的 SQLite3 的，但是在 5.9 这个版本中，Docker 镜像将默认数据库改为了 MySQL 8，这就导致从低版本升到高于 5.9 版本的镜像之后，数据库会直接找不到。在这个 PR 中，其实给出了一个临时的解决方案，就是在环境变量中加两个变量，就可以继续使用 SQLite3，这两个变量是：",[31,211,215],{"className":212,"code":213,"language":214,"meta":36,"style":36},"language-yaml shiki shiki-themes material-theme-lighter github-light github-dark","database__client: sqlite3\ndatabase__connection__filename: \u002Fvar\u002Flib\u002Fghost\u002Fcontent\u002Fdata\u002Fghost.db\n","yaml",[38,216,217,229],{"__ignoreMap":36},[41,218,219,223,226],{"class":43,"line":44},[41,220,222],{"class":221},"sQzsp","database__client",[41,224,74],{"class":225},"sP7_E",[41,227,228],{"class":47}," sqlite3\n",[41,230,231,234,236],{"class":43,"line":80},[41,232,233],{"class":221},"database__connection__filename",[41,235,74],{"class":225},[41,237,238],{"class":47}," \u002Fvar\u002Flib\u002Fghost\u002Fcontent\u002Fdata\u002Fghost.db\n",[27,240,241],{},"添加完之后，容器可以正常升级了。",[27,243,244],{},"但，既然官方已经将数据库支持重点改为了 MySQL 8，不怕麻烦的话，也可以升级下数据库。原本准备写个 MySQL 8 的升级教程的，想想不折腾了，我的博客用轻量的 SQLite3 就够了。",[246,247,248],"style",{},"html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sQzsp, html code.shiki .sQzsp{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":36,"searchDepth":80,"depth":80,"links":250},[],null,"jpg","2023-04-08",false,"md",{},"\u002Fposts\u002F2023\u002Fupgrade-ghost-5-0-to-5-42",{"text":259,"minutes":260,"time":261,"words":262},"2 min read",1.995,119700,399,{"title":22,"description":29},{"loc":257},"posts\u002F2023\u002F20230408.upgrade-ghost-5-0-to-5-42",[267,268,269],"技术","博客","Ghost","jTG5prR9EJe76ga8Usd6FU3xLZllrEAUvtzpDIDc-io",[272,278],{"title":273,"path":274,"stem":275,"date":276,"description":277,"children":-1},"TimedRotatingFileHandler 不会自动清除旧日志的问题","\u002Fposts\u002F2023\u002Ftimedrotatingfilehandler-backupcount-problem","posts\u002F2023\u002F20230423.timedrotatingfilehandler-backupcount-problem","2023-04-23","话不多说，直接贴代码：",{"title":279,"path":280,"stem":281,"date":282,"description":283,"children":-1},"关于人生的一些思考","\u002Fposts\u002F2022\u002Fthoughts-about-life","posts\u002F2022\u002F20220620.thoughts-about-life","2022-06-20","最近，老婆孩子回老家了，主要还是因为上海的疫情，幼儿园也不上学，各种兴趣班也都只能线上，索性直接回老家过暑假了，还能搞点兴趣班上一上。",1777579138904]