質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

0回答

638閲覧

データベースの接続エラーを取得したい

ambiguous

総合スコア33

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2020/02/13 02:44

Ruby on Rails4にて、複数データベースとの接続を行う処理を記述しています。主となるデータベースはdatabase.ymlにて静的に指定するのですが、もう一方のデータベースはユーザが画面からホストアドレスやポート番号、データベース名を指定するため、該当のデータベースに接続できなかった場合のエラーを取得したいと考えています。

下記は端折ったコードで申し訳ないのですが...

「★ココ」の部分で指定したパラメータでデータベース接続の可否を判断するか、もしくは事前にパラメータに含まれるホストアドレス+ポート番号での接続可否、該当するデータベースの有無を判断するにはどうのようにしたら良いでしょうか?

ActiveRecord::ConnectionAdapters::ConnectionManagementからMysql2::Errorが発生するというところまでは判ったのですが、それをどう判定(コーディング)すれば良いのかが判りません。またエラー(Exception?)が発生した場合、後続の処理を飛ばすにはrescue内でreturnしてしまっても良いものなのか...この辺り、教示いただける方がおられましたら回答願えますでしょうか。

主たるデータベースはPostgrSQL、動的に指定するデータベースはMySQLの予定ですが、判定対象となるデータベースに拘らない汎用的な方法があれば良し、なければデータベースプロダクトに閉じた方法でも構いません。宜しくお願いいたします。

ruby

1class HogeBase < ActiveRecord::Base 2 self.abstract_class = true 3end 4 5class Fugafuga < HogeBase 6 self.table_name = :abcde 7end 8 9class AiueoController < ApplicationController 10 def index 11 db_params = params[:db] 12 begin 13 HogeBase.establish_connection db_params ←★ココ 14 rescue 15 @errmsg = "DB接続エラーだよん" 16 return 17 end 18 Fugafuga.all.each do |any| 19 p any.id 20 end 21 end 22end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/02/13 02:53

「ユーザが画面からホストアドレスやポート番号、データベース名を指定する」とありますが、データベース内のテーブル構造も接続ごとに違ってくる、という理解で間違いないでしょうか。
ambiguous

2020/02/13 03:29

データベース名はデフォルト名が存在するので基本的に同じと思われますが、初期構築時に指定できるようで名称が異なることも前提に入れています。テーブルを含むスキーマは同じものを想定しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問