最近、MariaDBが人気です。 mysqlからの派生で、mysqlに比べてパフォーマンスが良いとかなんとか。
詳しくはこちらなどを参考に。 MariaDBとは
githubでも公開されてます。 github - MariaDB
さてさて、homesteadを使った開発環境構築で、MariaDB使うにはどうしたらいいかと言いますと、 公式サイトにやり方が書いてあるので、それに沿って設定してupするだけです。
前提条件
vagrantなどはインストールしてあるものとします。 筆者はmacOSで環境構築をしました。
構築手順
構築手順は、過去記事のこちらなども参考にしてください。 laravel + homestead + xdebugの開発環境構築手順
プロジェクトディレクトリ作成
$ mkdir sample_project
$ cd sample_project
ダウンロード&初期化
$ vagrant box add laravel/homestead
$ git clone https://github.com/laravel/homestead.git ./
$ bash init.sh
Homestead.yamlの編集
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
mariadb: true
authorize: ~/.ssh/id_rsa.pub
mariadbをtrueにします。
起動
$ vagrant up
mariadbへログインしてみる。
$ vagrant ssh
vagrant@homestead:~/code$ mysql -u homestead -p homestead
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.2.15-MariaDB-10.2.15+maria~xenial-log mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [homestead]>
ログインできました! .envのDB設定を同じにして、laravelのmigrateもいけます。
環境構築時、こんなエラーにひかかってしまいました。
migrateを実行したら、
エラー画面
vagrant@homestead:~/code$ php artisan migrate
Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (SQL: create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(255) not null, `batch` int not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')
at /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
660| // If an exception occurs when attempting to run a query, we'll format the error
661| // message to include the bindings with SQL, which will make this exception a
662| // lot more helpful to the developer instead of just the database's errors.
663| catch (Exception $e) {
> 664| throw new QueryException(
665| $query, $this->prepareBindings($bindings), $e
666| );
667| }
668|
Exception trace:
1 PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution")
/home/vagrant/code/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68
2 PDO::__construct("mysql:host=mariadb;port=3306;dbname=homestead", "homestead", "secret", [])
/home/vagrant/code/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68
Please use the argument -v to see more details.
vagrant@homestead:~/code$
対策
単純に.envの設定が違ったので、正しい値に修正。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=XXXXXXXXXXXX
再度実行
vagrant@homestead:~/code$ php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
vagrant@homestead:~/code$ php artisan migrat
Migration table created successfully.
vagrant@homestead:~/code$
通った、よかった。