はじめに
前書き
- FileMaker Advent Calendar 2020 の 3 日目記事です
対象読者
- Claris FileMaker Server 19 ユーザ
- FileMaker から MySQL への接続を ODBC 経由でおこないたい
基礎知識
- CentOS は Red Hat Enterprise Linux 互換です
環境
- Linux CentOS 7.9
- 7.8 でももちろん可
- MySQL ODBC Connector 8.0.22
本題
MySQL ODBC ドライバのインストール
インストール or 最新 ver. 更新
- 以下コマンドでインストール
- あるいは既にインストールされている場合は最新の ver. へ更新
sudo rpm -Uvh http://repo.mysql.com/mysql80-community-release-el7.rpm
sudo yum install mysql-connector-odbc
- 実行すると以下のようなログが表示される
- ここでは ver. 5.2.5 から 8.0.22 へ更新されている
- 途中で進めるかどうか尋ねられるところでは
y
を入力して進めること
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ty1.mirror.newmediaexpress.com
* epel: nrt.edge.kernel.org
* extras: ty1.mirror.newmediaexpress.com
* updates: ty1.mirror.newmediaexpress.com
Resolving Dependencies
--> Running transaction check
---> Package mysql-connector-odbc.x86_64 0:5.2.5-8.el7 will be updated
---> Package mysql-connector-odbc.x86_64 0:8.0.22-1.el7 will be an update
--> Processing Dependency: mysql-community-client-plugins = 8.0.22 for package: mysql-connector-odbc-8.0.22-1.el7.x86_64
--> Running transaction check
---> Package mysql-community-client-plugins.x86_64 0:8.0.22-1.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================
Package Arch Version Repository Size
==============================================================================================
Updating:
mysql-connector-odbc x86_64 8.0.22-1.el7 mysql-connectors-community 4.1 M
Installing for dependencies:
mysql-community-client-plugins x86_64 8.0.22-1.el7 mysql80-community 235 k
Transaction Summary
==============================================================================================
Install ( 1 Dependent package)
Upgrade 1 Package
Total download size: 4.3 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-client-plugins-8.0.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Public key for mysql-community-client-plugins-8.0.22-1.el7.x86_64.rpm is not installed
(1/2): mysql-community-client-plugins-8.0.22-1.el7.x86_64.rpm | 235 kB 00:00:00
Public key for mysql-connector-odbc-8.0.22-1.el7.x86_64.rpm is not installed
(2/2): mysql-connector-odbc-8.0.22-1.el7.x86_64.rpm | 4.1 MB 00:00:00
----------------------------------------------------------------------------------------------
Total 24 MB/s | 4.3 MB 00:00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Importing GPG key 0x5072E1F5:
Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>"
Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5
Package : mysql80-community-release-el7-3.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
Installing : mysql-community-client-plugins-8.0.22-1.el7.x86_64 1/3
Updating : mysql-connector-odbc-8.0.22-1.el7.x86_64 2/3
Success: Usage count is 1
Success: Usage count is 1
Cleanup : mysql-connector-odbc-5.2.5-8.el7.x86_64 3/3
Verifying : mysql-community-client-plugins-8.0.22-1.el7.x86_64 1/3
Verifying : mysql-connector-odbc-8.0.22-1.el7.x86_64 2/3
Verifying : mysql-connector-odbc-5.2.5-8.el7.x86_64 3/3
Dependency Installed:
mysql-community-client-plugins.x86_64 0:8.0.22-1.el7
Updated:
mysql-connector-odbc.x86_64 0:8.0.22-1.el7
Complete!
- 再度 install を実行してみると、以下のように既にインストール済で最新 ver. になっているよと表示される
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ty1.mirror.newmediaexpress.com
* epel: nrt.edge.kernel.org
* extras: ty1.mirror.newmediaexpress.com
* updates: ty1.mirror.newmediaexpress.com
Package mysql-connector-odbc-8.0.22-1.el7.x86_64 already installed and latest version
Nothing to do
odbc.ini の設定
設定ファイルの設置
- 以下 path に
odbc.ini
ファイルを設置
sudo vi /etc/odbc.ini
設定ファイルの中身
- 中身は以下のように
-
libmyodbc8w.so
の path が異なる場合は自身の環境に合わせて書き換えてください - 登録したいデータベースが複数ある場合、同じように記述を繰り返していくこと
-
/etc/odbc.ini
[ODBC Data Sources]
DataBase_1 = MyODBC 8.0 UNICODE Driver DSN
DataBase_2 = MyODBC 8.0 UNICODE Driver DSN
[DataBase_1]
Driver = /usr/lib64/libmyodbc8w.so
SERVER = xxx.xxx.xxx.xxx
PORT = 3306
Database = DataBase_1
OPTION = 3
INTERACTIVE = 1
BIG_PACKETS = 1
NO_PROMPT = 1
COMPRESSED_PROTO = 1
AUTO_RECONNECT = 1
MULTI_STATEMENTS = 1
[DataBase_2]
Driver = /usr/lib64/libmyodbc8w.so
SERVER = xxx.xxx.xxx.xxx
PORT = 3306
Database = DataBase_2
OPTION = 3
INTERACTIVE = 1
BIG_PACKETS = 1
NO_PROMPT = 1
COMPRESSED_PROTO = 1
AUTO_RECONNECT = 1
MULTI_STATEMENTS = 1
- なお、以下の項目についてはお好みで、必須ではありません
- その他、文字コードを
utf8
やutf8mb4
などに指定したい時は、charset = utf8
など追記してください - 各項目の詳細は以下リンクにて
- その他、文字コードを
OPTION = 3
INTERACTIVE = 1
BIG_PACKETS = 1
NO_PROMPT = 1
COMPRESSED_PROTO = 1
AUTO_RECONNECT = 1
MULTI_STATEMENTS = 1
FileMaker Server 再起動
- 設定した内容を反映させるため
- なお、この再起動の必要性は MySQL Connector をインストールした際におこなわれるべきものであって、
odbc.ini
ファイルの中身を書き換えるだけであれば、わざわざサービス再起動をおこなわなくても設定が反映されるもよう - ……つまり
odbc.ini
ファイルを中途半端に不正な状態で保存してしまうと、最悪 FileMaker Server / Pro がクラッシュするリスクもあり?🤔
- なお、この再起動の必要性は MySQL Connector をインストールした際におこなわれるべきものであって、
sudo service fmshelper restart
接続確認
- FileMaker Pro を起動して任意のファイルを開く
-
ファイル
>管理
>外部データソース
を選択
- データソースの編集ウィンドウで
タイプ
をODBC
にしてDNS
の右端にある指定
ボタンを押したときに以下のようなウィンドウが表示されてodbc.ini
に記述したとおりのリストが見られればヨシ!
-
ファイル
>管理
>データベース
を選択してリレーションシップ
タブでテーブルオカレンスを追加しようとする際に、以下のように ODBC データソースから選べるようになっているはずです
- なおデータベース接続の認証情報はグローバル変数を用いるか、都度入力させるかにしておくのがよいでしょう
- グローバル変数の設定は、スクリプトトリガ
OnFirstWindowOpen
でファイルを開いたときに実行されるのが良いと思います - グローバル変数については以下の記事などご参照ください
- グローバル変数の設定は、スクリプトトリガ
おわりに
感想
- .ini ファイルをテキストで記述できるのは本当に楽で助かります
- しかし Linux での MySQL ODBC Connector 8 に関連する情報は散逸していて一つにまとまっているところが見つからず、思った以上にまとめるのが大変だった!
参考リンク
- MySQL Documentation - A Quick Guide to Using the MySQL Yum Repository
- pkgs.org - mysql-connector-odbc-8.0.22-1.el7.x86_64.rpm
- Claris FileMaker Server 19 ヘルプ - 外部 ODBC データソースへのアクセス
- Claris article - 外部 SQL データソースに対してサポートされている ODBC ドライバ
- MySQL Connector/ODBC Developer Guide - 5.5 Configuring a Connector/ODBC DSN on Unix
- MySQL Connector/ODBC Developer Guide - 5.2 Connector/ODBC Connection Parameters
- Stack Overflow - MySQL Connector ODBC odbc.ini 'Option' flag values