laradockで環境を起動
docker-compose up -d nginx mysql redis beanstalkd
DBの作成
mysqlのDBを作成する
(初めていじるかたは、近隣のDBをバックアップをとっておくこと。
MySQLコンテナに入る
docker exec -it laradock_mysql_1 /bin/bash
バージョンを確認
mysql --version
ログインの初期設定
mysql -udefault -psecret
データベースの確認
show databases;
デーブルの確認
show tables;
dbをつくる場合
mysql> create database hoge;
ERROR 1044 (42000): Access denied for user 'default'@'%' to database 'hoge'
初期のDBを作るときは以下記述する
/laradock/mysql/docker-entrypoint-initdb.d/createdb.sql.example
/laradock/mysql/docker-entrypoint-initdb.d/createdb.sql
最初にMySQLコンテナに入ってしまうと
~/.lardock/data/mysql
ここにデータが保持されるらしい、なので消す。
rm -rf ~/.lardock/data/mysql
mysqlを立ち上げなおす
docker-compose up -d mysql
そしてコンテナから入り直すとDBが作成されているはず。
tableの作成
ワークスペースに入る
docker exec -it laradock_workspace_1 bash
migrationファイルを作成
/var/www# php artisan make:migration create_test_db_table
スキーマのカラムタイプをいろいろ変えたいときはこちらを参照。
作りたいテーブル定義に編集してmigrationを実行
root@b17755e83e64:/var/www# php artisan migrate
エラー
PDOException::("SQLSTATE[HY000] [2002] Connection refused")
このようなエラーが出たときは、接続に失敗しているので
laravelプロジェクト配下の.envのmysql情報を
laradock配下の.envのmysql情報に合わせて変更する必要がある。
修正が完了したら再度
php artisan migrate
で実行。
上記で間違った内容で実行してしまい、migrateファイルを編集して再度トライしても
Nothing to migrate.
となってしまう
一つ前にもどすなら
php artisan migrate:rollback
最新の状態に再度実行なら
php artisan migrate:refresh
同じ設定のテーブルを変更して再度実行すると、既に存在するのでエラーになる場合
テーブルを捨てて作り直すのであれば
php artisan migrate:fresh
この際、.env設定ファイルを間違えるとDBが全て消えるので注意すること。