本記事は「CentOS7+nginx+PHP-FPM+PHP7でSymfony3の実行環境構築」の記事の続きです。
本記事の目標
前回作った環境で、MySqlをつかってデモアプリを動かせるようにします。
Mysql インストール
こちらを参考にさせていただきました。
- 読み替えたところ
- パスワードは変更。後ほど
app/config/parameters.yml
のdatabase_password
項目に設定します。
- パスワードは変更。後ほど
データベースの準備
php bin/console doctrine:database:create
するとsymfony
というデータベースが作成されます。
以下詳細はブログにも書いてあります。
Symfonyのデモアプリのデータベース
デモアプリではSQLiteがデフォルトとして使われているので、MySqlを使うように設定を変更します。
まずはapp/config/parameters.yml
。ユーザー名とパスワードは読み替えてください。
# 削除
# database_url: 'sqlite:///%kernel.root_dir%/data/blog.sqlite'
# 追加
database_host: 127.0.0.1
database_port: null
database_name: symfony
database_user: your_user_name
database_password: youre_password
次にapp/config/config.yml
# Doctrine Configuration (used to access databases and manipulate their information)
doctrine:
dbal:
# if you don't want to use SQLite, comment the two following lines
# ここをコメントアウト
# driver: "pdo_sqlite"
# path: "%kernel.root_dir%/data/blog.sqlite"
# uncomment the following lines to use a database different than SQLite
# ここから下をコメントイン
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
ここまで設定したところで、MySqlを使う設定ができました。
自前でデータを用意してるよっていう方は、ブログのページが表示されるはずです。
そうでない人は以下を参考にデータをインポートします。
SQLiteのダンプからMySqlにデータを移植
こちらを参考にさせていただきました。
時間がない人は最終的な形をそのままMySqlで流してください。
まずはSQLiteに登録されているデータを抜いてきます。
$ sqlite3 ./app/data/blog.sqlite
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> .tables
symfony_demo_comment symfony_demo_post symfony_demo_user
sqlite> .output ./dump.txt
sqlite> .dump
sqlite> .output stdout
sqlite>.exit
MySqlでそのまま使えない箇所を直します。
- MySqlにCLOB型がないみたいなので、target.sqlのCLOBをTEXTに変更
- NOT DEFERRABLE INITIALLY IMMEDIATEの指定がMySQLだと効かないみたいなので、この部分を削除して、SET FOREIGN_KEY_CHECKS=0;を追加。
修正したデータを流し込み。
mysql -uroot symfony < target.sql
これで無事動きました。