Help us understand the problem. What is going on with this article?

SymfonyデモアプリをMySqlを使って動かす

More than 3 years have passed since last update.

本記事は「CentOS7+nginx+PHP-FPM+PHP7でSymfony3の実行環境構築」の記事の続きです。

本記事の目標

前回作った環境で、MySqlをつかってデモアプリを動かせるようにします。

Mysql インストール

こちらを参考にさせていただきました。

  • 読み替えたところ
    • パスワードは変更。後ほどapp/config/parameters.ymldatabase_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

これで無事動きました。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away