0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLiteからMySQLに移行する手順(PHP/Laravel)

Posted at

環境

  • 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

.dumpコマンドについて

2. 出力されたSQLite用のSQLクエリをMySQL用に編集

  1. PRAGMA foreign_keys=OFF;を削除
  2. BEGIN TRANSACTION;を削除
  3. insert文, create文で指定するテーブル名の "" (ダブルクォーテーション) を削除
  4. 型の書き方を編集
    integer         →   INT
    primary         →   PRIMARY
    key             →   KEY
    autoincrement   →   AUTO_INCREMENT
    not null        →   NOT NULL
    varchar         →   VARCHAR([サイズ])
    
  5. (今回は必要なかったので)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"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?