CakePHP3をHerokuでデプロイしたい①

CakePHP3をHerokuでデプロイしたいです。

ここはかなり時間を要しました。

参考にしたサイトやその途中で詰まったところを説明していこうと思います。

悩んでいる方、詰まっている方の助けになれば幸いです。

【自分の環境】
macOS Catalina
PHP7.4.2
CakePHP3.8
MAMP5.7
Apache2.2
MySQL5.7

参考になるサイト

まず以下のQiitaです。

PHPで作ったWebサービスをHerokuでデプロイするまでの手順書 - Qiita

ここではCakePHP3ではないのですが、PHPでのデプロイ手順が載っています。

かなり参考になりました。

CakePHP3では手順10までは、このQiitaを見てやるだけで何とかなります。

手順11に関しては「CakePHP3をHerokuでデプロイしたい② - 29歳からエンジニア目指すブログ」で書きます。

上記のQiitaで1点補足するとすれば、手順6でcomposer.jsonを作ってcomposer installしているところです。

これはCakePHPを使っている我々の場合、いらない手順です。

CakePHPでcomposer系はすでにあるので、結局手順12のディレクトリに移すところで上書きしてしまいます。

これでデプロイまでできれば、あとはエラーを消すだけとなります。

上のQiitaで詰まった場所

以下は個人的にですが、かなり詰まった場所があります。

手順10です。

phpMyAdminからMySQLWorkbenchへテーブル情報をコピーするのですが、全然入らなかったです。

エラーは3つ出ました。

MySQLWorkbenchでのエラー①

まずエラーの内容は忘れてしまったのですが、以下のQ&Aで解決しました。

[Q&A] Herokuでのデプロイ中につまづいてます。。 - Qiita

内容はDB指定が甘かったからでした。

>エクスポートした SQL に CREATE DATABASE IF NOT EXISTS `studydiary` が含まれていそうです。 ClearDB では既定の heroku_xyz... 以外に新しいデータベースを作ることはできません。 phpMyAdmin で単一のデータベースについてエクスポートするか、 SQL ファイルを直接編集するといいでしょう。

以上のアンサーのように、違うDBの内容も一緒にエクスポートしていたことから発生しました。

phpMyAdminでエクスポートする際に、単一のDBを選択してエクスポートしたら、エラーが変わりました。

MySQLWorkbenchでのエラー②

エラーは「ERROR 1050 (42S01) at line 29: Table 'comments' already exists」です。

これは見たまんまのエラーです。

きっと途中までdumpファイルが実行されてしまったことによるエラーです。

MySQLWorkbenchのテーブルを見て、既存のテーブルたちを削除してやるとエラーが変わります。

自分はとあるteratailで「phpMyAdminSSL化していないから」という記述に踊らされて、必死でMAMPSSL化していました。

勉強になったのでよかったのですが、ちゃんとエラーを見極めるのは大事ですね。

MySQLWorkbenchでのエラー③

これまたエラーを残してないので忘れてしまったのですが、絵文字対応に関するエラーでした。

utf8mb4にしては文字数が多いよ、みたいなエラーでした。

全部のstring(varcher)の文字数を191文字以内にすることで解決しました。

app.phpのDB情報の書き換え

そしてClearDBを使っているので、CakePHP3の設定も書き換えなければなりません。

先ほどのQiitaで言う手順11です。

ただこれに関しては「CakePHP3をHerokuでデプロイしたい② - 29歳からエンジニア目指すブログ」の記事で書こうと思います。

次の記事で書きますので、公開をお待ちください。

終わりに

一旦これで終わりにしようと思います。

app.phpの設定が必要なので、それは「CakePHP3をHerokuでデプロイしたい② - 29歳からエンジニア目指すブログ」に続きます。

ありがとうございました。