TAMINIF’s blog

京都在住のWebエンジニア。iOSアプリもやってます。勉強会にも参加してます。最近はマネージャー色強め

RedashのDatasourcesにMySQLがなかった場合の対処法

はじめに

RedashのDatasourcesにMySQLが出てこなかったので、その調査と解決策です。

TL;DR

PythonMySQL用ライブラリ(MySQL-Python)をAPサーバにインストールする

何が起きているか

Redashでは、Datasourceごとにクライアントライブラリが存在するかをチェックし、存在しないDatasourceは新規作成時に表示されません。

Redashの環境構築を行う際、docker-compose.ymlを使用してDocker上で全て完結する場合は全てのクライアントライブラリをインストールするpipコマンドが実行されるようDockerfileに記載されています。(requirements_all_ds.txt
ただ、こちらの記事にある開発者向けの環境構築手順では、Datasourceをインストールする手順が省略されているため、いくつかのDatasourceは表示されません。

何もしなくてもいくつかのDatasourcesが使用できる理由

環境構築で必要なライブラリだからだと思われる。
例えば、Postgresqlはライブラリがimportできるかのチェックすら行なっていない。これはおそらくPostgresqlをRedash自身が使用するため、ライブラリは確実にインストールするためだと思われる。
他にも、MongoDBやAmazon Athenaは、Redashのユニットテストで使用しているため初期から表示されている。

MacMySQL-Pythonをインストールする

pipでインストールするだけでは動きませんでした。

pip install MySQL-python

また、全てのDatasourceをインストールしようとしても失敗しました。

pip install -r requirements_all_ds.txt

インストール失敗時に表示されたエラーメッセージを読み、こちらの記事を参考にしました。 stackoverflow.com

まとめ

Docker Composeで構築した場合と自分で構築した場合で表示されるDatasourcesが違ったり、いくつかのDatasourcesは最初から利用できることから
最初はとても戸惑ったけど、中を読めばわかる内容だった。
ドキュメントではLinuxでの環境構築が書かれており、Macで環境構築しようとすると少し手間が必要になる。
他に同じような内容で困っている人がいればこの記事が参考になると幸いです。