設計書なき開発の進め方(Mac, MySQL, Symfony) #5
まずはsymfonyでmysqlを使うようにするための設定。
./symfony configure:database "mysql:host=localhost;dbname=virtuosoec"
これで、config/databases.ymlファイルが以下のように編集される。
このファイルはおそらく、手動でメンテするのではなく上記コマンドで変更するものと思われます。
[config/databases.yml]
all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: 'mysql:host=localhost;dbname=virtuosoec'
username: root
password: null
次からsymfonyコマンドでソースコードを自動生成していきます。そのときソースコードには、チームや部署の作業者の名前が入ります。propertiesiniを使って名前を入れます
config/properties.ini
スキーマの設定。このファイルを元にSQLやモデルファイルが作成されます。とりあえずは必要最低限、仕様に出てきた項目を用意します。
[config/doctrine/schema.yml]
Item:
columns:
id: { type: integer, notnull: true, primary: true, autoincrement: true }
name: { type: string(255), notnull: true }
description: { type: string, notnull: true }
unit_price: { type: decimal, notnull: true }
./symfony doctrine:build-mode./symfony doctrine:build-sql
nakagaki-kenji-no-macbook-pro:virtuosoec kenji$ ./symfony doctrine:insert-sql>> doctrine creating tables
PHP Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/kenji/virtuosoec/lib/vendor/symfony-1.4.18/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470
Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/kenji/virtuosoec/lib/vendor/symfony-1.4.18/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470
...実際にデータベースに接続しようとした時に、この警告が発生します。調べてみると、"UNIX Socket"との値が警告メッセージの中の値と異なっています。
nakagaki-kenji-no-macbook-pro:virtuosoec kenji$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.5.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> status
--------------
mysql Ver 14.14 Distrib 5.5.27, for osx10.6 (i386) using readline 5.1
Connection id:7
Current database:
Current user:kenji@localhost
SSL:Not in use
Current pager:stdout
Using outfile:''
Using delimiter:;
Server version:5.5.27 MySQL Community Server (GPL)
Protocol version:10
Connection:Localhost via UNIX socket
Server characterset:latin1
Db characterset:latin1
Client characterset:utf8
Conn. characterset:utf8
Uptime:31 min 1 sec
Threads: 1 Questions: 36 Slow queries: 0 Opens: 35 Flush tables: 1 Open tables: 27 Queries per second avg: 0.019
--------------
設定ファイルに合うように、configure:databaseコマンドを修正してもう一度作成します。
./symfony configure:database "mysql:host=localhost;dbname=virtuosoec;unix_socket=/tmp/mysql.sock"
テストデータを用意します。
[data/fixtures/fixtures.xml]
Item:
B001DCQI82:
name: Beethoven: The Symphonies [Box Set, CD, Import, From UK]
description: Herbert von Karajan
unit_price: 2468
B004HGQXB8:
name: Complete Beethoven Edition [Box Set, CD, Import, From US]
description: 交響曲は、他にも安いのがいくらでもあるので...(以下省略)
unit_price: 8480
./symfony doctrine:data-load
今日はここまで