3 返信 最新の回答 日時: Oct 17, 2013 12:37 AM ユーザー:Shin

    ODBC外部データソースの切替

    okabe

      タイトル

      ODBC外部データソースの切替

      フォーラムに投稿

           Windows のFILEMAKER SERVER 11 、クライアント FM Advanced 11 v3 の環境で
           MySQL を外部データソースとして FMサーバーから ODBC 接続しています。
           (当然ODBCデータソースの定義はFM SERVER上にしかしていません。)

           MySQL には 本番用データベース DBH と テスト用データベース DBT
           があり(MySQLホストは同一)

           DBH と DBT はテーブル構成は全く同じです。
           FM SERVER でのデータソースではデータベースとして テスト用の DBTを指定しています。

           FMクライアントで 外部データソースのシャドウテーブルをリレーションシップ画面で作成し
           シャドウテーブルのレイアウトで「新規レコード」するとMySQL のテーブルにレコードが作成されます。
           (ここまでは問題なし)

           ここまでして、
            FM SERVER でのデータソース定義でデータベースを DBT から本番用の DBT に変更し、
            MySQLサーバー、FMサーバーおよびFMクライアントを再起動します。

           再起動後
            FMクライアントで MySQL のシャドウテーブルは DBH に変更しているかと思うと
            どうも DBT のままです。

            ここでもう一つ別のシャドウテーブルを作成するとこちらは DBH のものになります。

            これではスクリプト中のテーブル指定も別のものになりスクリプトの修正が必要になってしまいます。


           やりたいことは
            MySQL のデバッグ用データベースを、本番用に切り替えたいだけなのですが
             何かよい方法があるのでしょうか?

            実際にODBC接続されている方はどのようにしてテスト、本番をされているのでしょうか?


            

        • 1. Re: ODBC外部データソースの切替
          Shin

               サーバーを2台用意して、IP以外は同じ構成にしておきます。DSNのアドレスを書き換えるだけで切り替え出来ます。物理的に切り離しているので、安全な方法です。

               DBHとDBTは、同じドライブの別のディレクトリーにあるのでしょうが、内部でリンクしてしまっていませんか。可能ならば、DBTを別ドライブを移してみてはいかがでしょう。

          • 2. Re: ODBC外部データソースの切替
            okabe


                 shin 様。ありがとうございます。

                 >サーバーを2台用意して、IP以外は同じ構成にしておきます。DSNのアドレスを書き換えるだけで切り替え出来ます。

                 この方法で解決できました。

                 (補足)
                 shin 様のご回答に関して、自分でも調べてみました。
                 ---------------------------------------------------------------
                 1. >DBTを別ドライブを移して

                 MySQL (少なくともWindows版)で、データベースを複数のドライブには作成できないと思います。

                 参考:データディレクトリの変更 http://www.dbonline.jp/mysqlinstall/install/index6.html

                 ----------------------------------------------------------------

                 2. >内部でリンクしてしまっていませんか
                 リンクはしていません。
                 データベースの選択で切り替えるのでは駄目な理由は以下のように考えられます。

                 ODBC コネクター の database 選択メニューで使用可能なデータベース
                 が一覧表示されますが。そこで別のデータベースを選択すればデータソースの切替ができると思っていましたが、
                 どうもそうではないようです。
                 これは単なるフィルターで、ファイルメーカー側の「外部データソースの指定」画面の中の
                 フィルターテーブルとしてカタログ名を指定したのと同じ効果しかないようです。
                 ファイルメーカーはシャドウテーブルを識別するにのに MySQL側の データベース名とテーブル名を
                 利用しているようです。シャドウテーブルを作成時にこの情報を記録し、削除したとき以外変更されないようです。

                 実際に ODBCコネクターをデバッグモードにして、SQLログを見ると
                 SELECT COUNT(*) FROM DBT.w;
                 のようにデータベース名+テーブル名 という形式でアクセスしています。


                 -------------------------------------------------------------------
                 したがって、shin 様の方法が唯一の方法のようです。

            • 3. Re: ODBC外部データソースの切替
              Shin

                   MySQLは試したことがありませんが、別ドライブを使えたことがありました。(長く触っていませんが、LinuxかUnixだったかも)

                    

                   その推定が正しければ、同一ドライブの中で構築するには、ファイル名をすべて別にしないとダメなようですね。

                   今の時代なら、VMという手も使えるかも。