PHP PDO 使用这种风格:
MySQL
mysql:host=hostname;dbname=databasename用户名和密码位于各自单独的参数中
PostgreSQL
pgsql:host=hostname;dbname=databasename;user=username;password=password
但是当在 Github 上搜索 DSN 解析器时,他们似乎完全使用了不同的格式,如下所示:
mysql://user:pass@hostname:port/databasename
我的问题是,实际上是否存在每种语言都接受的标准 DSN 格式?
让我们看看DSN到底是什么?
DSN代表数据源名称。但这也称为数据库源名称。DSN术语也与连接字符串重叠。大多数系统不区分DSNs或 ,connection strings并且该术语通常可以互换使用。
DSN 属性可能包括但不限于:
以上信息摘自wiki
一般来说,许多语言都为数据库连接维护以下格式的连接字符串。这可能是一个社区标准。但我没有看到任何规范DSN。
scheme://username:password@host:port/dbname?param1=value1¶m2=value2&...
Run Code Online (Sandbox Code Playgroud)
有多种方法可以连接到数据库。因此,有一些通用属性可用于所有类型的数据库连接。请参阅以下示例:
通过套接字连接到数据库
mysql://user@unix(/path/to/socket)/dbname
Run Code Online (Sandbox Code Playgroud)
通过非标准端口连接到数据库
pgsql://user:pass@tcp(localhost:5555)/dbname
Run Code Online (Sandbox Code Playgroud)
使用选项连接到 Unix 机器上的 SQLite
sqlite:////full/unix/path/to/file.db?mode=0666
Run Code Online (Sandbox Code Playgroud)
使用选项连接到 Windows 计算机上的 SQLite
sqlite:///c:/full/windows/path/to/file.db?mode=0666
Run Code Online (Sandbox Code Playgroud)
使用 SSL 连接到 MySQLi
mysqli://user:pass@localhost/pear?key=client-key.pem&cert=client-cert.pem
Run Code Online (Sandbox Code Playgroud)
连接到 MS Access 有时需要 admin 作为用户名
odbc(access)://admin@/datasourcename
Run Code Online (Sandbox Code Playgroud)
使用特定游标连接到 ODBC
odbc(access)://admin@/datasourcename?cursor=SQL_CUR_USE_ODBC
Run Code Online (Sandbox Code Playgroud)
这里我分别提供 PostgreSQL 和 MySQL 的两个链接。您将在那里找到它们如何用于connection string连接数据库。