Django / Python な人が Heroku で MySQL を使うときに環境変数 DATABASE_URL の末尾に “?reconnect=true” は不要

ググると大体 Rails の話

アプリを初めてHerokuにデプロイする場合、
手順をググると大体が、
CLEARDB_DATABASE_URL= 'mysql://[username]:[password]@[hostname]/[db_name]?reconnect=true'の値を、
DATABASE_URLという環境変数にコピーしなさい。
その場合、mysql://mysql2://に変更すること、とよく書いてある。

そのmysql2://は、よくよく読むと Ruby / Rails 固有の設定ということがわかるので、
Django の場合は変更せずそのままコピーで良いのかと思い、そのまま migrate しようとするとエラー。

TypeError: __init__() got an unexpected keyword argument 'reconnect'

どうするか

これに関してはここに記載があった。
ClearDB MySQL | Heroku Dev Center

末尾のパラメータ“?reconnect=true”Rails ユーザーの為のものなので

DATABASE_URL= 'mysql://[username]:[password]@[hostname]/[db_name]?reconnect=true'

DATABASE_URL= 'mysql://[username]:[password]@[hostname]/[db_name]'

に変更すると無事にマイグレート完了。

<広告>
改訂版出ましたね。

エキスパートPythonプログラミング改訂2版

エキスパートPythonプログラミング改訂2版