Я пытаюсь создать сценарий, который импортирует элементы из производственной базы данных в локальную, но у меня возникают проблемы с переключением производства формы подключения на локальную.
Doctrine_Manager::getInstance()->setCurrentConnection('prod-slave');
// execute query to get data from production, confirm it worked
Doctrine_Manager::getInstance()->setCurrentConnection('local');
// insert data into local database
Когда я запускаю это, я получаю эту ошибку:
Неустранимая ошибка PHP: необработанное исключение «Doctrine_Connection_Mysql_Exception» с сообщением «SQLSTATE [HY000]:
Общая ошибка: 1290 Сервер MySQL работает с —read-only
вариант, поэтому он не может выполнить этот оператор «в …
Если я закрываю соединение с prod-slave, прежде чем установить его на локальный, я получаю:
Неустранимая ошибка PHP: необработанное исключение «Doctrine_Manager_Exception» с сообщением «Неизвестное соединение: prod-slave» в …
Обратите внимание, что в обоих этих случаях он все еще пытается подключиться к ведомому, даже если я изменил соединение на локальное (в первом случае это должно быть ведомое устройство, поскольку оно доступно только для чтения).
Я также попытался вручную установить соединения с:
Doctrine_Manager::connection('mysql://path');
Версия доктрины: 1.2.3
Версия Symfony: 1.3.9
Любая помощь приветствуется.
Спасибо
Если вы проверите сгенерированные базовые классы для своих моделей, в самом начале вы увидите, что каждая ваша модель привязана к определенному соединению. Таким образом, даже если вы установите текущее соединение с другим, будет использоваться одна граница.
Решение позвонить Doctrine_Manager::getInstance()->bindComponent($component, 'local');
для каждой из ваших моделей.
Вместо того, чтобы использовать setCurrentConnection
попробуйте использовать getConnection
$slave = Doctrine_Manager::getInstance()->getConnection('prod-slave');
$result1 = $slave->execute($some_sql);
$local = Doctrine_Manager::getInstance()->getConnection('local');
$result2 = $local->execute($some_other_sql);
у меня работает над проектом symfony 1.4.
Это должно работать при условии, что в вашем config / database.yml у вас есть два соединения прод-рабыня а также местный правильно настроен. И в ваших файлах схемы вы привязали свои таблицы к соответствующим соединениям. (На всякий случай документ на связи и все что можно найти Вот )