常见错误及解决方法
1. 容器启动后无法访问
请检查容器是否正确映射了端口、目录,以及访问的IP、端口号是否正确;
排除了IP、端口、目录映射的原因之后,通常是内置的PostgreSQL数据库无法初始化或者启动导致的;
因为PostgreSQL数据库的数据文件都存在容器内的/config/pgsql 目录中,而这个目录的拥有者必须为容器内的postgres用户且目录权限为drwx------(即700),否则数据库无法正常运行;
已知的问题:
1、通过SMB或者NFS挂载的远程目录,无法作为/config/pgsql目录
2、如果硬盘的文件系统为exFAT格式,无法作为/config/pgsql目录
3、/config/pgsql目录不要使用ACL权限
4、/config目录映射的不是默认的docker目录请检查/config目录Everyone是否有读取权限 检查方法点击这里
UNRAID系统请检查 Settings (设置) => ShareSettings (全局共享设置) 中Tunable (support Hard Links) (可调式 支持硬链接) 的值是否为 Yes (是)
因为PostgreSQL会针对/config/pgsql内的文件进行硬链接操作
提示:如果宿主机的硬盘较小,担心缩略图目录(/config/cache)占用的空间过大,可以额外配置缩略图的位置
2. 第一次安装时,数据库无法初始化:
以下3种解决方法都可以解决目录权限的问题,选择一种您熟悉的方式即可:
- 1.指定PUID、PGID运行(推荐)
- 2.在宿主机中修改目录权限
- 3.单独安装数据库,然后 连接外部数据库
3. 一、在日志中找到有用的错误信息
查看docker容器的日志,看本次启动是否有以下情况:
- 1、如何是第一次安装,请查看容器日志的最开始部分。
===== initDbPath ===== 更多日志... 可能包含错误信息
- 2、如果是在使用了一段时间后无法访问,请先重启容器,然后查看本次启动日志的最开始部分。部分情况下,重启容器后即可正常访问服务器;这类情况通常是/config/pgsql目录的权限在外部被修改导致的。
历史日志... 2022-11-01T16:07:01: PM2 log: pid=72 msg=process killed 2022-11-01T16:07:01: PM2 log: PM2 successfully stopped waiting for server to shut down.... done server stopped Process finished ===== updateDbPath ===== waiting for server to start.... 更多日志...
上面日志从 “===== updateDbPath ===== ”开始为本次启动的日志;错误信息在这后面会出现。
4. 二、错误类型:
看日志开始部分是否有以下错误:
- sh /usr/app/initDb.sh chmod: changing permissions of '/config/pgsql': Operation not permitted;
- init db error: could not access directory "/config/pgsql/data": Permission denied;
等和/config/pgsql目录权限有关的错误;
4.0.1 解决方法:
以下3种解决方法都可以解决目录权限的问题,选择一种您熟悉的方式即可:
- 1.指定PUID、PGID运行(推荐)
- 2.在宿主机中修改目录权限
- 3.单独安装数据库,然后 连接外部数据库
5. 3、目录权限解决方法:
5.1 方法1:指定PUID、PGID运行(推荐)
举例:假设MT Photos容器的目录映射为:
- 宿主机(/mnt/user/appdata/MtPhotos/config) => 容器(/config)
- 宿主机(/mnt/user/photos/upload) => 容器(/upload)
步骤:
- 确认容器配置中/config/目录是否有读写权限;
- 将宿主机中的/mnt/user/appdata/MtPhotos/config(即例子中映射容器的/config/)目录的拥有者改为系统中某个非root用户
- 获取这个用户的uid、gid,在系统的终端中执行 id xxx即可获取用户的uid、gid;比如下图中 用户media的uid为1002,gid为100
- 为容器添加环境变量:PUID、PGID(相关说明见 环境变量)
- 启动容器

注意:PUID、PGID 不能为0
5.2 方法2:在宿主机中修改目录权限
可按照以下步骤检查 /config/pgsql目录的权限:
- 容器的终端执行 ls -l /config,确定/config/pgsql目录权限是否为 drwx------(即700) 且用户、用户组为postgres,如果权限和下面截图的不一致,执行下面的步骤。
- 容器的终端执行 id postgres,获取容器内postgres的uid、gid
- 宿主机的终端执行cd /xxx/config, 跳转到config目录中(即例子中映射容器的/config/)
- 宿主机的终端执行sudo chmod 700 -R pgsql,sudo chown 103:105 -R pgsql提示:103和105为第二步执行后,容器内postgres的uid和gid
- 等待第4步命令执行完成,重启容器

5.3 /config目录映射的不是 默认的docker目录
如遇到目录权限问题,可以检查/xxx/config/(即例子中映射容器的/config/)目录的权限;
- 1、Owner是否有完全控制权限
- 2、Everyone是否有读取权限
如果没有,请按以下步骤添加;添加完成后,重启MT Photos容器;
如果无法添加权限,建议 /config 映射默认的 docker目录
如果宿主机的硬盘较小,担心缩略图目录(/config/cache)占用的空间过大,可以额外配置缩略图的存储位置
添加方法如下:
5.4 方法3:连接外部数据库
如果您对遇上2种方法不熟悉,可以单独安装PostgreSQL数据库,然后连接外部数据库 查看使用教程
6. 使用了一段时间后,数据库无法启动或连接
看日志开始部分是否有以下错误:
- ERROR [TypeOrmModule] Unable to connect to the database.
- pg_ctl:could not start server
那么需要查看数据库日志/config/pgsql/serverlog最新的日志;
寻找FATAL、PANIC开头的日志;
根据日志内容,可能存在以下几种情况:
6.0.1 2.1、数据库目录权限错误
错误信息:
FATAL: data directoy "/config/pgsql/data" has invalid permissions
6.0.2 解决方法:
在宿主机中修改目录权限
6.0.3 2.2、数据库目录文件丢失
错误信息:
FATAL: could not open directory "pg_notify":No such file or directiry
等 No such file or directiry的错误的
解决方法:
请对照以下目录列表,检查是否有缺少的文件夹,新建缺少的文件夹,然后重启容器即可;
# /config/pgsql/data下的文件夹 ├── base │ ├── 1 │ ├── 13704 │ └── 13705 ├── global ├── pg_commit_ts ├── pg_dynshmem ├── pg_logical │ ├── mappings │ └── snapshots ├── pg_multixact │ ├── members │ └── offsets ├── pg_notify ├── pg_replslot ├── pg_serial ├── pg_snapshots ├── pg_stat ├── pg_stat_tmp ├── pg_subtrans ├── pg_tblspc ├── pg_twophase ├── pg_wal │ └── archive_status └── pg_xact
6.0.4 2.3、数据库找不到有效的检查点记录
错误信息:
PANIC: could not locate a valid checkpoint record
或者 pg_wal 文件下的文件丢失
FATAL: could not open file "pg_wal/000000010000000000000006": No such file or directory
解决方法:
- 启动容器;
- 进入容器的终端内执行以下命令su postgres -c '/usr/lib/postgresql/14/bin/pg_resetwal -f /config/pgsql/data'
- 等待命令执行完成后重启容器;
提示:在享受本文内容的同时,请注意版权归属 徐州鑫坤机电设备有限公司https://www.xzxkjd.com如果您觉得有价值欢迎分享,但请务必注明出处,感谢您的理解,谢谢!
以下部分内容需要登录查看 立即登录
相关内容
- 常见错误及解决方法
- 常见错误及解决方法
- 常见错误及解决方法
- 上海非急救出租服务全解析
- 深耕中考复读赛道 深圳深才教育为复读生搭建升学桥梁
- 阳光下的童年:那些被温暖照亮的纯真时光
- 群晖DSM7.0-7.21监控套件Surveillance Station 9.20-11289开心版60个许可证设置教程(无重启、无断流、无卡死、史上最完美)
- 云服务器+SD-WAN组网和域名DNS解析
- 在云主机上安装iKuai OS,实现SD-WAN组网,利用云主机80;443端口搭建企业网站。个人博客。让云主机当做你的堡垒机,实现数据本地化。
- 中央空调只开一台=全开耗电?真相让人意外!
- 告别卡顿时代:PCDN正成为互联网内容分发的核心引擎
- 5G时代必备!PCDN如何让视频加载速度快如闪电?
 简体中文
简体中文 繁體中文
繁體中文 English
English Nederlands
Nederlands Français
Français Русский язык
Русский язык Polski
Polski 日本語
日本語 ภาษาไทย
ภาษาไทย Deutsch
Deutsch Português
Português español
español Italiano
Italiano 한어
한어 Suomalainen
Suomalainen Gaeilge
Gaeilge dansk
dansk Tiếng Việt
Tiếng Việt Pilipino
Pilipino Ελληνικά
Ελληνικά Maori
Maori tongan
tongan ᐃᓄᒃᑎᑐᑦ
ᐃᓄᒃᑎᑐᑦ ଓଡିଆ
ଓଡିଆ Malagasy
Malagasy Norge
Norge bosanski
bosanski नेपालीName
नेपालीName čeština
čeština فارسی
فارسی हिंदी
हिंदी Kiswahili
Kiswahili ÍslandName
ÍslandName ગુજરાતી
ગુજરાતી Slovenská
Slovenská היברית
היברית ಕನ್ನಡ್Name
ಕನ್ನಡ್Name Magyar
Magyar தாமில்
தாமில் بالعربية
بالعربية বাংলা
বাংলা Azərbaycan
Azərbaycan lifiava
lifiava IndonesiaName
IndonesiaName Lietuva
Lietuva Malti
Malti català
català latviešu
latviešu УкраїнськаName
УкраїнськаName Cymraeg
Cymraeg ກະຣຸນາ
ກະຣຸນາ తెలుగుQFontDatabase
తెలుగుQFontDatabase Română
Română Kreyòl ayisyen
Kreyòl ayisyen Svenska
Svenska հայերեն
հայերեն ဗာရမ်
ဗာရမ် پښتوName
پښتوName Kurdî
Kurdî Türkçe
Türkçe български
български Malay
Malay मराठीName
मराठीName eesti keel
eesti keel മലമാലം
മലമാലം slovenščina
slovenščina اوردو
اوردو አማርኛ
አማርኛ ਪੰਜਾਬੀName
ਪੰਜਾਬੀName albanian
albanian Hrvatski
Hrvatski Suid-Afrikaanse Dutch taal
Suid-Afrikaanse Dutch taal ខ្មែរKCharselect unicode block name
ខ្មែរKCharselect unicode block name


 印修
 印修

