DevsDawn
DevsDawn

开发
文章归档

ThinkPHP模型关联设置允许查询软删除数据

在使用ThinkPHP的模型关联和软删除功能时,我们可能会遇到一些特殊的需求。例如在某些情况下,我们希望关联数据即使已经被软删除,也需要查询出来。此时如果直接使用belongsTo之类的关联方法,查询出来的数据默认过滤了软删除数据。 例如,在获取一篇文章的发布者时,如果对应的用户已被删除,那么关联方法就无法获取对应的发布者信息。如果不想让软删除的用户影响关联结果,那么可以在模型关联中添加removeOption('soft_delete')方法: public function user() { return $this…

2023-11-06  

解决MySQL ERROR 3029 错误

ERROR 3029 (HY000): Expression #1 of ORDER BY contains aggregate function and applies to the result of a non-aggregated query 这个错误是指在使用聚合函数(如sum, count, max, min等)进行排序时,没有将排序的列包含在分组的列中,或者排序的列与分组的列没有函数依赖关系。这种情况下,MySQL无法确定如何对分组后的结果进行排序,因此会报错。这个错误与MySQL的sql_mode设置有关,如果sql_mode包含only_full_group_by,那么就会出现这个错误。 有两种解决办法: - 一种…

2023-10-19  

MySQL Incorrect key file for table 报错排查

近期一个项目在运行过程中数据库经常出现Incorrect key file for table 'xxx.MYI'; try to repair it. MySQL Errno: 126的错误,导致项目完全无法正常运行。业主急死,打了十几个电话过来,被迫在下班的路上继续加班:joy:。 首先通过搜索找到了这两种可能性: 一种可能的原因是您的查询获取的数据大于您的/tmp文件夹(即用于存储临时表的文件夹)的大小。解决方法是更改/tmp文件夹的位置,或者增加/tmp文件夹的空间。 另一种可能的原因是表损坏。解决方法是重新创建或修复…

2023-06-12  

解决MySQL in select子查询无法使用索引问题

近期在编写一个业务逻辑,需要从订单表中找出所有手机号属于某一个用户的订单,而每个用户可关联多个手机号,于是有以下的查询语句: select * from mall_order where phone in (select phone from user_phone where user_id = #{id]}) 以上mall_order表的phone字段和user_phone的user_id字段均已添加索引。 然而,通过对以上语句explain后发现索引失效,语句对mail_order进行了全表查询,并没有使用到已经添加的phone索引。 经过排查,发现mall_order表和user_phone表的phone字…

2022-12-07  

解决easyexcel导出表格慢问题

近期一个项目中出现使用easyexcel导出表格非常慢的情况。数据量约10w行,50个列,排除从数据库取出和处理数据的时间,调用ExcelWriterBuilder的doWrite方法后需要1分多钟的时间才能够生成好文件,导致客户端经常请求超时,无法顺利导出文件。 通过排查,发现项目之前的开发封装的导出类在导出时使用了LongestMatchColumnWidthStyleStrategyhandler,该handler会根据表格内宽度最大的单元格自动设置列宽,而该功能需要遍历所有单元格的数据来计算宽度来实现,因而十分耗费性能和时间…

2022-11-09  

Vue项目ChunkLoadError报错解决

问题信息 近期项目出现大量以下这种类型的报错,显示该js文件找不到,并且用户反馈点击后整个页面卡住,但是刷新页面后就不会再报错: ChunkLoadError Loading chunk chunk-9f35075c failed. (missing: https://***.com/js/chunk-9f35075c.4032e0dc.js) 以及下面这种报错: SyntaxError Unexpected token '<' 问题分析 尝试直接访问该链接,也是出现文件不存在的情况,而被伪静态规则转发访问到首页,chunk loader加载后发现不是正确的js文件,报…

2022-10-29  

小程序setStorageSync:fail write DB data fail报错问题处理

微信小程序线上报出以下错误: Error: MiniProgramError APP-SERVICE-SDK:setStorageSync:fail write DB data fail Error: APP-SERVICE-SDK:setStorageSync:fail write DB data fail 客户端手机型号和系统版本为iPhone 12(iOS 14),微信版本为8.0.29,SDK版本为2.27.0,经搜索得知wx.setStorageSync在部分微信苹果客户端上有几率出现本地数据库损坏,导致报出以上的错误。 虽然该公告显示7.0.7以前的版本才存在这个问题,但是社区里也有部分开发者反馈在8.0.x版本中也有出现过此…

2022-10-24  

修复date-fns-tz导入失败问题

在执行yarn build打包node项目时,出现以下错误: [vite]: Rollup failed to resolve import "date-fns/_lib/cloneObject/index.js" from "node_modules/date-fns-tz/esm/formatInTimeZone/index.js". This is most likely unintended because it can break your application at runtime. If you do want to externalize this module explicitly add it to `build.rollupOptions.external` error during build: Error: [vite]: Rollup failed to resolve import "date-fns/_lib/clon…

2022-09-23  

解决23:59:59.999时间存入MySQL变为00:00:00问题

问题 在使用Hutool的DateUtil.endOfDay方法时,生成的时间戳为2022-09-23 23:59:59.999,在写入MySQL数据库后字段值会变为2022-09-24 00:00:00。 原因 TIMESTAMP类型字段存储精度默认精确到秒,在存入带有毫秒数据时,毫秒数大于500时会自动进位。同理,DATETIME类型默认也是精确到秒的: UPDATE `test_table` SET `test_time` = '2022-09-23 23:59:59.999' WHERE `id` = 1; // 2022-09-24 00:00:00 UPDATE `test_table` SET `test_time` = '2022-09-23 23:59:59.499' WHERE `id…

2022-09-19  

git修改已提交记录的邮箱和作者名

修改指定提交之前 git rebase -r <some commit before all of your bad commits> \ --exec 'git commit --amend --no-edit --reset-author' 修改指定邮箱的提交 git filter-branch --env-filter ' OLD_EMAIL="[email protected]" CORRECT_NAME="Your Correct Name" CORRECT_EMAIL="[email protected]" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORR…

2022-03-25  

修复SSL peer certificate or SSH remote key was not OK问题

若确定证书未过期且非自签证书,可以先确认服务器证书是否为Let's Encrypt颁发的,大概率为Let's Encrypt根证书更新后,系统没有及时更新根证书所致,可以运行以下指令更新根证书。 apt-get update apt-get install ca-certificates

2022-03-10  

Git 小技巧 - 忽略不想要提交的本地修改

忽略本地修改 在一个多人协作的 Git 仓库里,有些情况下远程仓库中可能会存放一些 IDE 或者 Build 工具的配置文件,以方便所有参与的同学获得一致的体验。当然这些文件会从大局出发,加入的通常都是比较通用的配置项,不一定能完全满足你个人的需求。一旦你自己对这些文件做了个人定制,它们就会被 Git 识别为本地修改,不但本地的 git status 或 change list 一直会进行恼人的提醒,而且每次 git add 文件时还要小心翼翼的避开。 那么,有没有方法告诉 Git 我们可以忽略这些文件的…

2022-03-02  

Sentry部署配置调优

在部署Sentry自托管版时,默认的配置对低配置的服务器不太友好,可以通过调整如下参数优化: 通过修改Kafka启动参数限制内存占用,docker-compose.yml增加: zookeeper: environment: KAFKA_HEAP_OPTS: "-Xmx512M -Xms256M" kafka: environment: KAFKA_HEAP_OPTS: "-Xmx512M -Xms256M" 通过修改Health Check间隔降低资源占用,.env修改: HEALTHCHECK_INTERVAL=60s HEALTHCHECK_TIMEOUT=120s HEALTHCHECK_RETRIES=3

2022-03-02  

journalctl显示日志颜色

在使用journalctl查询日志时输出的日志默认不带有颜色,如需显示日志颜色,只需追加--output=cat参数即可正常显示日志颜色。 journalctl -fu [server_name] --output=cat

2022-02-24  

git忽略本地文件的改动

assume-unchanged方法 忽略跟踪: git update-index --assume-unchanged /path/to/file 恢复跟踪: git update-index --no-assume-unchanged /path/to/file skip-worktree方法 忽略跟踪: git update-index --skip-worktree /path/to/file 恢复跟踪: git update-index --no-skip-worktree /path/to/file

2022-01-23  
加载更多