navicat语法高亮严格依赖编辑器右下角手动选择的sql方言,而非连接类型;需确保该标签与实际数据库类型完全一致(如mysql连接就选mysql),否则关键字无法正确着色。
navicat 的语法高亮不是全局统一的,它严格依赖当前连接的数据库类型和编辑器中实际选择的 sql 方言。如果你看到关键字没变色、或该蓝不蓝、该红不红,大概率不是功能坏了,而是高亮“没对上号”。
为什么 MySQL 连接里写 PostgreSQL 语法不亮色
Navicat 的编辑器不会自动识别你写的 SQL 是哪种方言——它只认你当前连接的数据库类型,以及编辑器右下角手动指定的 SQL dialect(SQL 方言)。比如:
- 你连的是 MySQL,但编辑器右下角显示
PostgreSQL,那TEXT或UUID这类 PostgreSQL 关键字才可能高亮,而 MySQL 的ENUM或TINYINT反而不会 - 你连的是 PostgreSQL,但右下角是
MySQL,那ILIKE、USING(在 JOIN 中)就不会被识别为关键字 - 即使连接正确,如果在新建查询窗口时没绑定到具体连接(即处于“无连接”状态),编辑器默认用
Generic SQL,高亮规则极简,几乎只标SELECT/FROM这类通用词
如何手动切换编辑器的 SQL 方言
必须通过编辑器右下角的状态栏操作,不能靠连接类型自动推断:
- 打开一个已连接的查询窗口(或新建后先点左上角「连接」下拉选中某个连接)
- 观察窗口右下角,找到类似
MySQL、PostgreSQL、Generic SQL的标签 - 点击该标签 → 弹出菜单 → 选择与你当前连接**完全一致**的数据库类型(例如:连的是 MySQL 8.0,就选
MySQL,不要选MySQL (Legacy)或Generic SQL) - 切换后,已输入的语句会立即重绘高亮;新输入内容也按新方言解析
关键字被高亮但执行报错:可能是保留字冲突
高亮变蓝 ≠ 安全可用。Navicat 把数据库的保留关键字(如 order、group、user)标蓝,恰恰是在提醒你:这些词若用作列名或表名,必须用反引号包裹,否则执行会失败:
- 错误写法:
SELECT * FROM orders WHERE order = '123'(order是 MySQL 保留字) - 正确写法:
SELECT * FROM `orders` WHERE `order` = '123' - PostgreSQL 则需双引号:
SELECT * FROM "orders" WHERE "order" = '123' - Navicat 不会替你加引号,它只负责高亮提示风险
配置项里勾了「使用语法高亮显示」却无效
这个选项只是总开关,真正起作用的是两个隐性条件:
- 必须在「工具 → 选项 → 编辑器」里确认勾选了
使用语法高亮显示(老版本叫「代码附加选项」) - 但更关键的是:该设置只对**新建查询窗口**生效;已打开的窗口要重启或手动切换一次方言才会刷新
- 某些 Navicat 版本(如 15.x 早期)在使用 SSH 隧道连接时,编辑器偶尔会降级为
Generic SQL,此时需手动点右下角切回对应方言 - 如果连的是 Oracle,还要注意:Navicat 对 PL/SQL 块(
BEGIN...END)的高亮支持有限,复杂逻辑块内关键字可能不亮
最常被忽略的一点:高亮是否生效,不取决于你连的是什么库,而取决于编辑器右下角那个小小的下拉标签——它才是真正的“语法解释器开关”。很多人调了半天配置,却忘了点一下那里。











