walinejs / waline

💬 A Simple, Safe Comment System
https://waline.js.org/en/
GNU General Public License v2.0
2.17k stars 381 forks source link

MySQL 数据库 + Docker 部署的几个问题 #72

Closed leirock closed 3 years ago

leirock commented 3 years ago

昨晚在服务器简单测试了一下用 MySQL 数据库 + Docker 部署,前后端均为 Waline,效果不错,响应速度很快,也可以在后台正常删除评论。

不过存在两个问题(如下),能解决的话感觉这个方案个人认为是有服务器用户一个不错的独立部署方案,毕竟这样数据就可以都掌握在自己服务器里了。

(注:CloudBase 部署都方案各种奇奇怪怪的问题太多,已经放弃。目前暂时的替代方案:LeanCloud 数据库 + Docker 部署。另外,之前反映的不能删除评论问题,在 Docker 部署 + LeanCloud 数据库或 MySQL 数据库下均未出现。)

问题:

  1. Safari 浏览器下无法正确显示评论日期(但是管理后台可以正常显示),如下图。但是 Edge 浏览器是可以正常显示的,似乎是 Safari 浏览器对日期的格式有要求。该问题在 LeanCloud 数据库和 CloudBase 数据库下未出现。
  2. 使用文档中的数据迁移工具,将 LeanCloud 数据转换到 SQL 数据(.csv 格式)后,缺失 id pid rid 等几个数值,使得评论与子评论无法关联,点击评论内的@链接也不能实现评论跳转了。

测试链接:https://test.dlzhang.com

image

lizheming commented 3 years ago
  1. 时间显示是 MySQL 数据格式的兼容问题 @waline/client 新版已兼容
  2. CSV 数据转换未带 id, pid, rid 字段这个已增加,可以测一下
leirock commented 3 years ago

其他都没啥问题了,但是似乎因为status字段没有approved值,所以不显示评论,手动在MySQL更新了approved值也显示不出来

image
leirock commented 3 years ago

查了一下,没有任何报错信息,就是不加载评论

lizheming commented 3 years ago

可能是时间格式有问题,我处理了一下你再试试?

leirock commented 3 years ago

还是不行哎,加载不出来。时间这块在MySQL里面是正常可以读取出来的。另外评论后台是可以正常显示评论的。

image
lizheming commented 3 years ago

可以把你的数据导出成 .sql 文件发我一份我看看,我自己本地测了是正常的,可能需要具体针对的再看一下。

leirock commented 3 years ago

邮件已发

lizheming commented 3 years ago

查到问题了,是因为 ridpid 不存在的情况下 PHPMyAdmin 导入成 0 了,这块有点问题。你可以先用下面的 SQL 处理下数据,之后我再试试看看怎么处理下这块。

UPDATE `wl_Comment` SET `rid` = NULL WHERE `rid` = 0;
UPDATE `wl_Comment` SET `pid` = NULL WHERE `pid` = 0;
leirock commented 3 years ago

嗯,执行了这两行命令后就可以了

leirock commented 3 years ago

已经成功迁移到 Docker 部署 + MySQL 数据库了,体验不错,目前没有发现其他问题了。 https://blog.dlzhang.com

leirock commented 3 years ago

查到问题了,是因为 ridpid 不存在的情况下 PHPMyAdmin 导入成 0 了,这块有点问题。你可以先用下面的 SQL 处理下数据,之后我再试试看看怎么处理下这块。

UPDATE `wl_Comment` SET `rid` = NULL WHERE `rid` = 0;
UPDATE `wl_Comment` SET `pid` = NULL WHERE `pid` = 0;

补充一下,如果执行了以上两条,还需要执行以下一条,不然评论的时间会被更新

UPDATE wl_Comment SET `insertedAt` = `createdAt` WHERE `pid` IS NULL AND `rid` IS NULL
fdxx commented 3 years ago

查到问题了,是因为 ridpid 不存在的情况下 PHPMyAdmin 导入成 0 了,这块有点问题。你可以先用下面的 SQL 处理下数据,之后我再试试看看怎么处理下这块。

UPDATE `wl_Comment` SET `rid` = NULL WHERE `rid` = 0;
UPDATE `wl_Comment` SET `pid` = NULL WHERE `pid` = 0;

补充一下,如果执行了以上两条,还需要执行以下一条,不然评论的时间会被更新

UPDATE wl_Comment SET `insertedAt` = `createdAt` WHERE `pid` IS NULL AND `rid` IS NULL

有用,感谢!