首页 > 热门 > 竖图列表

常见错误及解决方法

竖图列表会员昵称: 印修关注投稿量:粉丝量:关注量:   2024-10-23 19:45:31A+A-

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)

步骤

  1. 确认容器配置中/config/目录是否有读写权限;
  2. 将宿主机中的/mnt/user/appdata/MtPhotos/config(即例子中映射容器的/config/)目录的拥有者改为系统中某个非root用户
  3. 获取这个用户的uid、gid,在系统的终端中执行 id xxx 即可获取用户的uid、gid;比如下图中 用户media的uid为1002,gid为100
  4. 为容器添加环境变量:PUID、PGID(相关说明见 环境变量)
  5. 启动容器

常见错误及解决方法(pic1)

注意:PUID、PGID 不能为0

5.2 方法2:在宿主机中修改目录权限

可按照以下步骤检查 /config/pgsql目录的权限:

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

常见错误及解决方法(pic2)

5.3 /config目录映射的不是 默认的docker目录

如遇到目录权限问题,可以检查/xxx/config/(即例子中映射容器的/config/)目录的权限;

  • 1、Owner是否有完全控制权限
  • 2、Everyone是否有读取权限

如果没有,请按以下步骤添加;添加完成后,重启MT Photos容器

如果无法添加权限,建议 /config 映射默认的 docker目录

如果宿主机的硬盘较小,担心缩略图目录(/config/cache)占用的空间过大,可以额外配置缩略图的存储位置

添加方法如下:常见错误及解决方法(pic3)

5.4 方法3:连接外部数据库

如果您对遇上2种方法不熟悉,可以单独安装PostgreSQL数据库,然后连接外部数据库 查看使用教程

6. 使用了一段时间后,数据库无法启动或连接

看日志开始部分是否有以下错误:

  • ERROR [TypeOrmModule] Unable to connect to the database.
  • pg_ctl:could not start server

那么需要查看数据库日志/config/pgsql/serverlog最新的日志;

寻找FATALPANIC开头的日志;

根据日志内容,可能存在以下几种情况:

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

解决方法:

  1. 启动容器;
  2. 进入容器的终端内执行以下命令
    su postgres -c '/usr/lib/postgresql/14/bin/pg_resetwal -f /config/pgsql/data'
  3. 等待命令执行完成后重启容器;


提示:在享受本文内容的同时,请注意版权归属 徐州鑫坤机电设备有限公司https://www.xzxkjd.com如果您觉得有价值欢迎分享但请务必注明出处,感谢您的理解,谢谢

以下部分内容需要登录查看 立即登录

点击这里复制本文地址 以上内容由用户上传和网络在徐州鑫坤机电设备有限公司整理呈现,如有侵权请联系站长:xzxkjd@qq.com !

1. 本网站可能包含第三方链接,请注意甄别,我们不对其内容负责。

2. 请遵守网络法律法规,在浏览网站时,不传播违法、不良信息,共同维护网络健康。否则后果自负!

3. 本网站内容受版权保护,未经许可,严禁转载!

4. 长时间浏览网站请注意适时休息,保护眼睛,保持身心健康。

5. 在浏览网站过程中,如有任何疑问或需要帮助,请随时联系我们的客服团队。

6. 如有好的内容可投稿申请发布我们收到会第一时间审核发布。

7. 请注意系统即将进行维护可能会影响部分功能的正常使用请提前规划好您的浏览时间,感谢您的理解,享受每一次在线体验

相关内容

加载中~

Copyright ©2012-2024徐州鑫坤机电设备有限公司版权所有
苏ICP备2023032739号-1ICP备2023032739号-2苏ICP备2023032739号-3X
苏公网安备 32038202000884号增值电信业务经营许可证:合字B1-20235517
开发中| 关键词| 网站地图| 网站地图| 网站地图| TAG集合

今日IP人数0今日浏览量(PV)0昨日IP人数0昨日浏览量(PV)07天IP人数07天浏览量(PV)0

网站已运行:

在线客服
服务热线

服务热线

0516-86596070

联系邮箱

服务热线

xzxkjd.@qq.com

微信咨询
我的网站名称
我的网站名称
交流群
返回顶部
X我的网站名称

截屏,微信识别二维码

微信号:xkyinxiu

(点击微信号复制,添加好友)

  打开微信

微信号已复制,请打开微信添加咨询详情!