有标准的 DSN 格式吗?

IMB*_*IMB 3 php pdo

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 格式?

unc*_*exo 9

让我们看看DSN到底是什么?

DSN代表数据源名称。但这也称为数据库源名称DSN术语也与连接字符串重叠。大多数系统不区分DSNs或 ,connection strings并且该术语通常可以互换使用。

DSN 属性可能包括但不限于:

  1. 数据源的名称
  2. 数据源的位置
  3. 可以访问数据源的数据库驱动程序的名称
  4. 用于数据访问的用户 ID(如果需要)
  5. 用于数据访问的用户密码(如果需要)

以上信息摘自wiki

一般来说,许多语言都为数据库连接维护以下格式的连接字符串。这可能是一个社区标准。但我没有看到任何规范DSN

scheme://username:password@host:port/dbname?param1=value1&param2=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连接数据库。