環境
- PHP(8.1)
- Laravel(10.49.0)
- PHPUnit(10.5)
- SQLite(3.38.5)
- MySQL(10.4.28)
1. データ投入用のSQLを取得
1. dumpファイルを作成
zsh
sqlite3 [sqliteのDBの格納場所] .dump > [出力するdumpファイル名]
例:sqlite3 database/database.sqlite .dump > dump.sql
2. 出力されたSQLite用のSQLクエリをMySQL用に編集
-
PRAGMA foreign_keys=OFF;
を削除 -
BEGIN TRANSACTION;
を削除 - insert文, create文で指定するテーブル名の "" (ダブルクォーテーション) を削除
- 型の書き方を編集
integer → INT primary → PRIMARY key → KEY autoincrement → AUTO_INCREMENT not null → NOT NULL varchar → VARCHAR([サイズ])
- (今回は必要なかったので)
sqlite_sequence
に関連した記述を削除
2. ダンプしたDB(SQL)をMySQLへ投入
1. MySQLにログインし、DBを新規に作成
zsh
mysql -u root -p
MariaDB[none]> CREATE DATABASE [作成するDB名];
2. SQLを実行し、ダンプファイルをインポート
zsh
mysql -u root -p [作成したDB名] < [dumpファイル名];
3. テーブルが作成され、データが正しくインポートされたか確認
方法① ターミナルで確認する場合
mysql
MariaDB[none]> USE [作成したDB名]
MariaDB[none]> SHOW TABLES;
MariaDB[none]> SELECT COUNT(*) FROM [各テーブル名];
方法② Sequal Aceで確認する場合(TCP/IP)
Host: 127.0.0.1
Username: [ユーザーネーム]
password: [パスワード]
Database: [作成したDB名]
Port: 3306
3. 設定を変更し、使用するDBとしてMySQLを指定
1. ソースコードを編集
.env
- DB_CONNECTION=sqlite
+ DB_CONNECTION=mysql
database/.gitignore
- *.sqlite*
+ *.mysql*
.env.testing
- DB_CONNECTION=sqlite
+ DB_CONNECTION=mysql
phpunit.xml
- <env name="DB_CONNECTION" value="sqlite"/>
+ <env name="DB_CONNECTION" value="mysql"/>
database.php
'mysql' => [
// 省略
+ 'database' => env('DB_DATABASE', '[作成したDB名]'),
+ 'username' => env('DB_USERNAME', '[ユーザー名]'),
+ 'password' => env('DB_PASSWORD', '[パスワード]'),
]
.env
DB_CONNECTION=mysql
+ DB_HOST=127.0.0.1
+ DB_PORT=3306
+ DB_DATABASE=[作成したDB名]
+ DB_USERNAME=[ユーザー名]
+ DB_PASSWORD=[パスワード]
2. 設定ファイルの変更を反映
zsh
php artisan config:clear # 設定キャッシュを削除
php artisan cache:clear # アプリ全体の古いキャッシュを削除
php artisan config:cache # 設定キャッシュを再生成
3. DB接続が正しく設定できているか確認する
zsh
php artisan tinker
> config('database.default') # ="mysql"