У меня есть две базы данных, которые делят учетные данные пользователя. Я использую PDO. Означает ли это, что мне нужно создать два подключения PDO, по одному для каждой базы данных? Я проверил документы, dsn стоит только для одного dbname.PDO и несколько схем
ответ
Да, вы должны установить соединение с каждой базой данных.
Да, и это не относится к PDO. Каждое клиентское соединение MySQL, независимо от того, на каком языке, работает (не более) одна база данных. Если вы хотите изменить базу данных, вы должны использовать USE newDatabaseName
. Но это, конечно, не имеет смысла с PDO, поэтому просто создайте два соединения.
EDIT:
Однако, как Marc B указал, вы можете использовать префикс для ссылки на другую базу данных на том же сервере MySQL. Но это не очень удобно, и я предполагаю, что это может вызвать проблемы, когда у вас есть определенные настройки соединения (например, некоторая кодировка, которая несовместима с другой БД).
Нет, вам понадобятся только два соединения, если доступ к базам данных осуществляется в физически различных экземплярах баз данных (разные серверные машины или разные копии базы данных) или использует DIFFERENT учетные данные для двух баз данных.
БД имя указывается в DSN просто база данных по умолчанию , но вы можете сделать тривиальным
SELECT fieldname FROM schema.table ...
, чтобы переопределить значение по умолчанию. например
SELECT fieldname FROM table
является эквивалентом
SELECT fieldname FROM default_specified_in_connection_string.table
Конечно! Я не думал о явной ссылке на БД. Хорошая точка зрения. – lxg
Зависит что вы подразумеваете под "базой данных". Некоторые люди используют этот термин для обращения к экземпляру MySQL. Каждое соединение PDO может ссылаться только на один экземпляр MySQL.
Но некоторые люди используют термин база данных как синоним «схемы». Может быть много схем на одном экземпляре MySQL, и вы можете использовать одно соединение PDO для доступа к любой схеме. Используйте один из следующих решений:
- Использовать имена квалифицированы табличного @MarcB показывает
- Выполните оператор
USE schema_name
изменить схему по умолчанию (см моего ответа на How do I select a MySQL database to use with PDO in PHP?)
Другого исключением является, если пользователю/паролю, который вы используете для подключения к экземпляру MySQL, были предоставлены привилегии только на одной из схем, которые вы хотите использовать. Затем вам нужно подключиться к другому пользователю/паролю для доступа к другим схемам.
- 1. Jooq Maven и несколько схем
- 2. Liquibase, MySQL и несколько схем
- 3. Entity Framework и несколько схем
- 4. DataTable Объединить несколько схем
- 5. Несколько схем в Gmail
- 6. Несколько схем при тестировании
- 7. CakePHP объединяет несколько схем
- 8. Несколько схем на AWS Dynamodb
- 9. Postgresql Несколько баз данных VS Несколько схем
- 10. Несколько схем валидации с атрибутами
- 11. Несколько схем auth в hapijs?
- 12. PDO несколько запросов
- 13. PDO несколько операторов SELECT
- 14. Несколько схем на нескольких машинах в postgres
- 15. Несколько схем в MongoDB (с использованием Mongoose)
- 16. Как добавить несколько цветовых схем в Gedit
- 17. Одна схема XSD или несколько схем XSD?
- 18. Несколько запросов и простой вывод (PDO?)
- 19. PDO, несколько заявлений, и условия гонки
- 20. несколько запросов PDO и выполняет одну функцию
- 21. Несколько записей с GET и PDO
- 22. Как установить несколько схем Avro с AvroParquetOutputFormat?
- 23. Защита WSDL и схем
- 24. Как настроить несколько схем с Hibernate
- 25. Сгенерируйте несколько схем с использованием Fluent nHibernate
- 26. Как обрабатывать несколько схем DB с Hibernate?
- 27. Несколько связанных схем с использованием jaxb2
- 28. Как использовать несколько схем в запросе Oracle?
- 29. Несколько схем URL-адресов в iOS
- 30. несколько локальных схем для XML-файлов
Вы хотите, чтобы только одно из подключений к базе данных было активным одновременно или оба соединения могут быть активны одновременно? – Mubo