Я в ситуации, когда мне нужно вызвать хранимую процедуру из Rails. Я могу это сделать, но он либо разрывает соединение MySQL, либо является псевдо-хаком, который требует странных изменений в хранимых процессах . Кроме того, псевдо-хак не может возвращать большие наборы данных.
Сейчас мое решение - использовать system()
и напрямую вызывать командную строку mysql
. Я думаю, что менее печальным решением было бы открыть мое собственное соединение MySQL независимо от соединения Active Record.
Я не знаю ни одной причины, почему это было бы плохо. Но я также недостаточно хорошо знаю внутренности MySQL, чтобы знать, что он на 100% безопасен.
Это решило бы мою проблему аккуратно, потому что с действиями контроллера, которые должны вызвать хранимый процесс, открылось бы новое соединение с базой данных, сделать вызов и закрыть его. Я мог бы пожертвовать некоторой производительностью, но если это работает, этого достаточно. Это также решает проблему нескольких пользователей в одном процессе (мы используем mongrel, в настоящее время) в пограничных рельсах, где теперь, наконец, потокобезопасен, так как для взлома требуется два SQL-запроса, и я не могу гарантировать, что использую такое же соединение с базой данных через Active Record.
Итак, это плохая идея и / или опасная?