Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@hanahiro_aze

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

これで無事動きました。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?