Navicat 在 Sonoma 下闪退问题处理

# Navicat 在 Sonoma 下闪退问题处理

系统版本:macos Sonama 14.2.1
Navicat:15.0.6
问题:打开数据库,双击表必现闪退,其他操作也经常触发闪退


# 最先开始认为是 Navicat 版本问题

所以找 IT 要到了 16 的正版授权,给到了一个 16.0.x 版本,安装测试依然闪退(这时候不知道还有最新的 16.3 版本)
这时候一度怀疑是 Sonoma 的问题(IT 给的建议是重装系统… 先不管重装能不能解决问题,重装成本有多高侬晓得伐)

# 再考虑可能是 navicat 残留的错误文件或者配置导致闪退

rm -rf 一系列 navicat 的配置、日志、数据、模型、等
删干净了,重新安装,依然闪退。真难顶,马上就快放弃了。重新开始 Google 问题,更换各种关键字

# 网上说的最多的 com.apple.quarantine 到底是什么?

com.apple.quarantine 是 macOS 系统中一个特殊的扩展属性(xattr),用于标记可能来自不可信来源的文件。当您从互联网上下载文件或通过邮件接收附件时,macOS 会自动为这些文件添加 com.apple.quarantine 属性。这个属性的主要目的是提醒用户谨慎对待这些文件,因为它们可能包含恶意软件或病毒。

当文件具有 com.apple.quarantine 属性时,系统会在您尝试打开它时显示一个警告对话框,询问您是否确实要打开这个文件。这可以防止用户无意中运行恶意软件。

com.apple.quarantine 属性还与 macOS 的 Gatekeeper 功能相关联。Gatekeeper 是一种安全机制,用于检查下载的应用程序是否来自已知的开发者,以及是否包含已知的恶意软件。当您从 App Store 或已签名的开发者处下载应用程序时,Gatekeeper 会允许您打开该应用程序。但是,如果应用程序来自未知的开发者或被 macOS 系统识别为潜在的恶意软件,Gatekeeper 将阻止您打开该应用程序。

在某些情况下,您可能需要删除文件的 com.apple.quarantine 属性,以便在不显示警告对话框的情况下打开文件。这在您确信文件是安全的情况下是合理的。您可以使用 xattr 命令来删除文件的 com.apple.quarantine 属性。

# 按照这个思路尝试解决

优先执行了这个命令

1
sudo xattr -r -d com.apple.quarantine /Applications/Navicat\ Premium.app

但是会提示错误

1
2
3
4
5
6
7
8
option -r not recognized
usage: xattr [-slz] file [file ...]
xattr -p [-slz] attr_name file [file ...]
xattr -w [-sz] attr_name attr_value file [file ...]
xattr -d [-s] attr_name file [file ...]
xattr -c [-s] file [file ...]
...
...

新系统 xattr 命令不支持 -r 参数

那么作为半个运维人,当然不可能不会这条命令:

1
sudo find /Applications/Navicat\ Premium.app -exec xattr -d com.apple.quarantine {} \;

这将使用 find 命令查找 Navicat Premium 应用程序包中的所有文件,并使用 xattr 命令尝试删除每个文件的 com.apple.quarantine 属性。

执行之后再次打开 navicat 依然闪退,放弃了。

# 最终方案

事情到了这里,已经折腾 1 小时了,但作为技术人,依然心存侥幸,仍然不愿意放弃继续 Google ,直接使用了 navicat sonama 当关键字搜索,翻阅 n 多条相关网站,终于得到一条有用信息: 升级到 16.2 之后就不会闪退了

所以快马加鞭到官网下载最新版本 16.3

安装,注册,测试,没闪退,问题解决.