Каждая подключение к базе данных будет представлена как обрабатывать отдельная база данных $dbh
Очевидно, вы могли бы написать подпрограмму, которая разъединяет от всех подключенных ручек базы данных, до тех пор, как ваш список подключенных баз данных всегда одинакова
Я не уверен, почему вы фиксируете строки подключения. Предположительно, вы имеете в виду DSN (имена источников данных), которые вы использовали при вызове DBI->connect
? Они просто параметры для операции соединения и дескриптор базы данных не может быть идентифицирован после факта из первоначального источника данных
Issuing rollback() due to DESTROY without explicit disconnect()
Это означает, что вы используете транзакции. Лучшим способом было бы позвонить rollback
или commit
самостоятельно, чтобы завершить транзакцию. Это плохая идея, чтобы оставить открытой транзакции, когда программа завершается, как вы полагаетесь на поведение по умолчанию драйвера базы данных
documentation for DBI::disconnect
говорит этот
Вообще, если вы хотите, чтобы ваши изменения должны быть совершены или откатываясь при отключении, вы должны явно называть «commit» или «rollback» перед отключением.
Вы также получите такое же предупреждение, если вы звоните disconnect
пока транзакция остается открытой, так commit
или rollback
, безусловно, правильный метод
Это прекрасно, чтобы последовательность разрушения в Perl implcitly отключить все базы данных обрабатывается до тех пор, пока транзакции не остаются открытыми в то время
DBI будет отключен неявно для вас, когда дескриптор инструкции выходит из области видимости. – simbabque
@simbabque: я получаю ошибку как: выдача отката() из-за DESTROY без явного отключения() ..... Я использую отдельную функцию разъединения, чтобы предотвратить это, но было бы здорово использовать одну функцию разъединения для всех строки. – Husk01inJun