Используете ли вы запросы, которые ссылаются на обе базы данных? Если нет, то не так уж сложно загрузить новый экземпляр БД для второй базы данных. То есть вы все равно будете использовать $ this-> db для первого, но вы можете использовать $ this-> db2 для второго. Я, честно говоря, понятия не имею, вызовет ли это команду «изменить базу данных», о которой вы говорите, но это, по крайней мере, НАМНОГО более устойчивый код. CI может сохранять свои соединения с каждой базой данных открытыми в течение всего сценария (не постоянное соединение), и, похоже, ваша проблема будет исправлена.
Мне никогда не требовалось несколько баз данных mysql в одном приложении, так что это полностью предположение, основанное на том, что я видел, скажем, с одним mysql db, а другим - sqlite db.