Как обработать ошибки подключения к базе данных в Codeigniter?
Наверное, решение, которое я предложу, не самое лучшее с точки зрения архитектуры... но и сам CodeIgniter - не есть шедевр архитектурных решений в своей области.Собственно, по теме:
Рассуждаем логически.
1. CodeIgniter написан на чистом PHP и ничего сверх того, что умеет сам PHP - CodeIgniter делать не может.
2. У нас какие-то сложности с обработкой ошибок подключения к БД на уровне CodeIgniter'a (какие именно - принципиального значения не имеет), но факт в том, что вариант CI вас чем-то не устраивает
3. Нам ничего не мешает подключаться к БД в обход стандартного механизма CI'а (я имею в виду, тестовый коннект, а не "вообще работать в обход стандартных механизмов")
Далее, решение напрашивается само собой:
1. Подключаемся к базе "напрямую", например, с помощью
mysqli_connect (с теми данными, которые ввел пользователь)
2.А Проверяем подключение и если "не коннект", проверяем ошибку, например с помощью
mysqli_error
2.Б Делаем то же самое, но получаем не сообщение об ошибке, а её код, функция
mysqli_errno
Функция вернет Вам ошибку (текст) либо её номер (код), которые в дальнейшем Вы можете обрабатывать как душе угодно. При этом, "тестовый коннект" можно делать как внутри контроллера, там и вообще в каком-то отдельном файле, который существует отдельно от CI и служит например, для его инсталляции. Иными словами, дальнейшее зависит от Вашей фантазии и конечных потребностей.
P.S. Соотв., если изначально, MySQL не возвращает конкретную ошибку, например "неправильный именно логин" или "логин правильный, а вот пароль - нет" (что в принципе было бы логично, из соображений безопасности) - а Вам нужна именно такая дотошная степень детализации ошибки - получить её каким-то разумным способом не удастся, но ошибки вроде "MySQL-сервера по адресу N - нет" или "Учетные данные для подключения - не верные" - обработать труда не составит.