mysql连接字符串必须包含协议头(jdbc:mysql://或mysql://)且端口不可省略,vscode的mysql扩展要求显式指定host和port字段或使用完整uri格式,localhost:3306等简写方式会报错。

MySQL 连接字符串必须带协议头且端口不可省略
VSCode 的 MySQL 扩展(如 MySQL by cweijan)不接受 localhost:3306 这类“图形界面式”写法,会直接报 getaddrinfo ENOTFOUND localhost:3306。它要求显式拆分 host 和 port,或使用完整 URI 格式。
- ✅ 正确写法(JSON 配置):
"host": "localhost", "port": 3306, "database": "mydb" - ✅ 正确写法(URI):
mysql://root:pass@localhost:3306/mydb——注意mysql://协议头不能漏,:3306也不能省,哪怕你用的是默认端口 - ❌ 错误写法:
"host": "localhost:3306"(把端口塞进 host 字段)、mysql://root:pass@localhost/mydb(缺端口) - ⚠️ 密码含
@、/等字符时,URI 里必须 URL 编码,比如pa@ss/word要写成pa%40ss%2Fword,否则解析失败且无明确提示
PostgreSQL 连接字符串中 database 字段必须存在且大小写敏感
PostgreSQL 扩展(如 SQLTools + PostgreSQL Driver)对 database 字段强制校验:留空、拼错、大小写不符,都会导致 database "xxx" does not exist,而不是提示“请填库名”。
- ✅ 必须填一个真实存在的库名,例如
"database": "postgres"或"database": "myapp_dev" - ✅ 推荐用
127.0.0.1替代localhost,尤其在 macOS/Linux 下可避免 IPv6 解析失败 - ✅ URI 写法示例:
postgresql://user:pass@127.0.0.1:5432/mydb——注意字段顺序和冒号位置 - ❌ 不要依赖环境变量或
.env文件,PASSWORD=xxx这种写法完全无效
SQL Server Azure 连接必须带完整域名后缀
连 Azure SQL 时,只填 myserver 或 myserver.database.windows.net:1433 都不行——前者超时,后者因端口被拒绝而失败。微软扩展严格校验 endpoint 格式。
- ✅ 正确 server 值:
"server": "myserver.database.windows.net"(不带端口) - ✅ 若需指定端口(非 1433),用
"port": 1433单独字段,不要塞进 server 字符串 - ✅ 认证方式选
SQL Server Authentication,Windows 集成认证在 Azure 场景下基本不可用 - ❌ 错误示例:
"server": "myserver"、"server": "myserver.database.windows.net:1433"、"server": "myserver.database.windows.net/MyDB"
Database Client 插件的连接字符串命名和原生驱动不一致
Database Client(cweijan 版)为统一多数据库体验,重命名了部分字段,和 JDBC/ODBC 原生参数不对应。照搬文档容易连不上。
- ✅ 它把 PostgreSQL 的
database叫作schema,MySQL 的database才叫database - ✅ 支持单行 URI,但不支持 URI 中的空格或未编码特殊字符(如中文、
!) - ✅ 启用 secret 存储需手动开启:
database-client.enableSecretStorage设为true,否则密码明文暴露在配置里 - ❌ 不自动读取系统级环境变量,也不兼容 Spring Boot 风格的
${DB_URL}占位符
Connect,看到右下角绿色图标才算真正通了。连接池复用机制也意味着改了服务端权限后,必须手动 Disconnect 再 Connect,否则旧会话一直挂着。











