You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何数据库在Plesk运行正常,迁移到RunCloud服务器后仅部分功能可用

问题根因排查及解决方法

  • 第一优先级:字符集不匹配
    你两边数据库的核心差异是Plesk侧使用utf8mb4字符集,RunCloud侧使用的是utf8(即MariaDB原生的utf8mb3,仅支持最多3字节的Unicode字符)。当你的程序需要写入emoji、生僻汉字等4字节字符时,RunCloud侧的数据库会直接报错或截断数据,触发程序崩溃。
    解决方法:
  1. 修改RunCloud侧MariaDB的全局配置,将默认字符集改为utf8mb4,排序规则对应改为utf8mb4_general_ci或和旧库一致的规则
  2. 删除已导入的数据库,确认从Plesk导出的SQL文件本身编码为utf8mb4后重新导入
  3. 检查程序数据库配置中的字符集参数,确保配置为utf8mb4
  • 第二优先级:MariaDB版本兼容问题
    Plesk使用的是MariaDB 10.1,RunCloud使用的是10.4,跨3个大版本的默认配置差异很大:
  1. SQL_MODE默认值不同:10.4默认开启严格模式(STRICT_TRANS_TABLES等规则),旧版本不规范的SQL写法(比如非空字段无默认值插入时不给值、GROUP BY字段不完整)在旧库可以运行,在严格模式下会直接抛出错误
  2. 时间字段规则不同:10.4默认禁止零值日期0000-00-00,对CURRENT_TIMESTAMP的使用限制也和10.1有差异
    解决方法:
    先查询Plesk侧的SQL_MODE配置:SHOW VARIABLES LIKE 'sql_mode';,将RunCloud侧的SQL_MODE临时调整为和旧库完全一致,验证功能正常后再逐步优化SQL写法适配高版本规则。
  • 第三优先级:数据库用户权限差异
    虽然两边的用户名都是prod@localhost,但RunCloud侧的用户可能缺少部分必要权限(比如LOCK TABLES、CREATE ROUTINE、ALTER等),程序执行对应操作时会触发权限错误。
    解决方法:
    分别在两边执行SHOW GRANTS FOR 'prod'@'localhost';,对比权限列表,补充RunCloud侧用户缺失的权限即可。

  • 关于UNIX socket连接的调整方法
    你只需要将程序数据库配置中的host参数从127.0.0.1改为localhost,MariaDB默认会对localhost走UNIX socket连接,127.0.0.1才会走TCP/IP。不过连接方式差异不会导致功能崩溃,最多是性能差异,可以放在最后验证。

内容的提问来源于stack exchange,提问作者Scott L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:45:05