PDO和多个模式

时间:2014-09-18 21:42:26

标签: php pdo

我有两个共享用户凭据的数据库。 我正在使用PDO。这是否意味着我必须创建两个PDO连接,每个数据库一个?我检查了文档,dsn只代表一个dbname。

4 个答案:

答案 0 :(得分:3)

不,如果您访问的数据库位于物理上不同的数据库实例(不同的服务器计算机或不同的数据库副本),或者正在为这两个数据库使用不同的凭据,那么您只需要两个连接。 / p>

您在DSN中指定的数据库名称仅仅是默认数据库,但您可以轻松地执行

SELECT fieldname FROM schema.table ...

覆盖该默认值。 e.g。

SELECT fieldname FROM table

相当于

SELECT fieldname FROM default_specified_in_connection_string.table

答案 1 :(得分:2)

是的,这不是PDO特有的。每个MySQL客户端连接,无论使用何种语言,都可以在(最多)一个数据库上运行。如果要更改数据库,则必须使用USE newDatabaseName。但这当然对PDO毫无意义,所以只需创建两个连接即可。

编辑:

但是,正如 Marc B 指出的那样,您可以使用前缀来引用同一MySQL服务器上的不同数据库。但这并不是很方便,我认为当你有特定于连接的设置时它会导致问题(例如,某个字符集与其他数据库不兼容)。

答案 2 :(得分:1)

是的,您必须设置与每个数据库的连接。

答案 3 :(得分:1)

取决于你的意思"数据库"。有些人使用该术语来指代MySQL实例。每个PDO连接只能引用一个MySQL实例。

但有些人使用术语数据库作为" schema"的同义词。单个MySQL实例上可以有许多模式,您可以使用单个PDO连接来访问任何模式。使用以下解决方案之一:

另一个例外是,您用于连接MySQL实例的用户/密码是否仅被授予您要使用的其中一个模式的权限。然后,您需要使用其他用户/密码重新连接以访问其他模式。