goland 数据库功能依赖“数据库工具和 sql”插件启用,需在设置中确认启用并重启;数据源类型必须匹配实际数据库(如本地 mysql 选 mysql 而非 x devapi);url only 连接会明文存储密码,应优先使用默认连接类型;sql 控制台上下文为会话级,每次需右键指定活动数据源。

GoLand 本身不直接执行 SQL,它靠 数据库工具和 SQL 插件 提供连接管理、语法高亮、自动补全和执行能力。插件默认启用,但一旦失效,整个数据库功能就“消失”——这是你点不到 数据库 工具窗口、看不到 go.mod 边距图标、或新建数据源选项灰掉的最常见原因。
确认数据库工具和 SQL 插件已启用
很多人卡在这一步却去查驱动或 DSN:插件被手动禁用后,所有数据库相关 UI 元素都会不可见。必须先打开设置验证:
- 按
Ctrl+Alt+S(Windows/Linux)或Cmd+,(macOS)打开设置 - 进入
插件→已安装页签 - 搜索
数据库工具和 SQL,确保其复选框被勾选 - 若刚启用,需重启 GoLand 才生效
重启后,查看 | 工具窗口 | 数据库 菜单项应可点击,go.mod 文件中也会出现数据库包(如 go-sql-driver/mysql)对应的边距图标。
创建数据源时选错类型会导致连接失败
GoLand 支持的数据源类型(MySQL、PostgreSQL、Azure SQL Database、LocalDB 等)不是仅用于 UI 分类——每种类型对应不同的 JDBC 驱动、默认端口、URL 拼接规则和认证逻辑。选错会直接导致 测试连接 失败,且错误信息常模糊(如 “Connection refused” 或 “No suitable driver”)。
- 连本地 MySQL 实例?选
MySQL,不是MySQL (X DevAPI)或Azure Database for MySQL - 连 Azure SQL?必须选
Azure SQL Database,它会自动注入encrypt=true;trustServerCertificate=false;等必要参数 - 连 SQL Server LocalDB?选
Microsoft SQL Server LocalDB,它支持(localdb)\mssqllocaldb这类实例名格式;普通Microsoft SQL Server类型不识别该语法 - 连 SQLite 文件?选
SQLite,并粘贴文件绝对路径(如/Users/me/demo.db),不要用 URL 格式
选错类型后,即使 DSN 手动填对了,GoLand 也可能拒绝生成有效 JDBC URL,或忽略你填的端口/实例名。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
URL only 连接类型会明文存储密码,慎用
当选择 URL only 连接类型时,GoLand 直接把完整 JDBC URL(含用户名密码)存进配置文件,并同步写入 IDE 日志和 数据源信息 对话框。这不是加密存储,而是纯文本。
- 示例 URL:
jdbc:sqlserver://localhost:1433;databaseName=test;user=sa;password=123456; - 该字符串可在
Help | Show Log in Explorer打开的日志目录中被检索到 - 团队协作或共享项目时,这种配置极易泄露凭据
- 推荐用
默认连接类型:密码字段单独输入,GoLand 内部加密处理,只在内存中拼接 URL
如果你必须用 URL(比如从云服务控制台复制的连接串),务必在提交前删掉 数据源和驱动程序 对话框里的密码字段内容,改用弹窗输入——这样密码不会落盘。
SQL 编写依赖数据源激活,且不能跨类型混用
GoLand 的 SQL 编辑器只有在“当前活动数据源”确定后,才能提供表名补全、列名提示、语法校验和执行按钮。这个“活动”状态取决于你在 数据库 工具窗口中右键点击的是哪个数据源节点。
- 右键点击
MySQL数据源 → “新建查询控制台”,编辑器顶部显示MySQL标签,此时写SELECT * FROM users;可自动补全users表 - 右键点击
PostgreSQL数据源 → 新建控制台 → 同样语句会报错:“relation 'users' does not exist”,因为 PostgreSQL 默认 schema 是public,而 MySQL 没有 schema 概念 - 在同一个 SQL 文件里混写
INSERT INTO mysql_table和INSERT INTO pg_table,GoLand 不会报错,但执行时只认第一个激活的数据源,另一条必然失败
真正容易被忽略的是:**SQL 控制台的上下文是会话级的,不是文件级的**。关掉再打开一个控制台,它不会记住你上次用的是哪个数据源——每次都要手动右键指定,否则补全和执行都指向默认或上一个活跃源。










