LaravelをインストールしてLaravelプロジェクトを動作させて、データベースを設定してマイグレーションファイルを作成するとターミナルでエラーが発生し、調べて見ると恐らくMySQLに接続できていないのが原因と考えましたが、どこを修正したら良いか分からず、困っています。
勉強不足で申し訳ないのですが、お助け頂けると助かります。
まず下記はマイグレーションした時のエラーです。
2020_08_17_105740_create_books_table.phpを下記のように修正し、php artisan migrateしました。
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateBooksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('books', function (Blueprint $table) { $table->increments('id'); $table->string('name', 50); $table->integer('price'); $table->string('author', 50)->nullable(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('books'); } }
(base) sample % php artisan migrate Illuminate\Database\QueryException SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations and table_type = 'BASE TABLE') at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671 667| // If an exception occurs when attempting to run a query, we'll format the error 668| // message to include the bindings with SQL, which will make this exception a 669| // lot more helpful to the developer instead of just the database's errors. 670| catch (Exception $e) { > 671| throw new QueryException( 672| $query, $this->prepareBindings($bindings), $e 673| ); 674| } 675| +34 vendor frames 35 artisan:37 Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
上記の内容から.envとdatabase.phpの記述に間違いがあると思い、下記のように記入しました。
.env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=sample DB_USERNAME=root DB_PASSWORD=test
database.php 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
その後、php artisan config:cacheしてから再度、php artisan migrateすると同じエラーになりました。
解決方法を検索していると、MySQLのインストールが必要な記事が出てきたので、インストール済みと思ったが念のためインストールしました。
インストール自体は何も問題なくできまして、mysql -urootを実行すると、
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
上記のエラーが表示され、接続ができないようなので解決方法検索していろいろ試してみましたが、解決できませんでした。
試したコマンド $ sudo /etc/init.d/mysqld restart mysql -u root -p brew uninstall mysql ls /usr/local/var/mysql [マシンのホスト名].local.pidの存在を確認。 mysql.server status ERROR! MySQL is not running mysql.server start --skip-grant-tables brew uninstall mysql sudo rm -rf /usr/local/var/mysql hown [mysqlの動作ユーザ名] /usr/local/var/mysql/***.local.err $ touch /usr/local/var/mysql/****.local.pid
調べてみて、新たなエラーが発生したので追記します。
mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
ソケットがないのが原因と思われたため、下記を実行しソケットを作成
% sudo touch mysql.sock Password: % sudo mysql.server start Starting MySQL .Logging to '/usr/local/var/mysql/****MacBook-Pro.local.err'. ERROR! The server quit without updating PID file (/usr/local/var/mysql/****MacBook-Pro.local.pid). % sudo chown -R _mysql:_mysql /usr/local/var/mysql % sudo mysql.server restart ERROR! MySQL server PID file could not be found! Starting MySQL .Logging to '/usr/local/var/mysql/****MacBook-Pro.local.err'. ERROR! The server quit without updating PID file (/usr/local/var/mysql/****MacBook-Pro.local.pid).
****MacBook-Pro.local.pidは存在していて、****MacBook-Pro.local.errも存在しています。
ソケットも作成して権限も移したのにエラーが解決できません。
新たに調べているとMySQLのバージョンに問題があるのではと思い追記します。
% ls /usr/local/Cellar/mysql* /usr/local/Cellar/mysql: 8.0.21 /usr/local/Cellar/mysql@5.6: 5.6.47
二つのバージョンが存在していて、どちらを使えば判断ができずにエラーが出ている可能性があると記載している記事をみました。
5.6.47をアンインストールし、現在は8.0.21のみになります。
再度、起動するもERROR! The server quit without updating PID fileと表示されたので、touch /usr/local/var/mysql/ユーザー名.local.pidを再度作成し、権限をsudo chown -R _mysql:_mysql /usr/local/var/mysql/を実行して、再度起動させるも下記のような状態になりました。
(base) ~ % mysql.server start Starting MySQL ./usr/local/Cellar/mysql/8.0.21/bin/mysqld_safe: line 144: /usr/local/var/mysql/ユーザー名.local.err: Permission denied rm: /usr/local/var/mysql/sユーザー名.local.pid: Permission denied 2020-08-18T03:43:42.6NZ mysqld_safe Fatal error: Can't remove the pid file: /usr/local/var/mysql/ユーザー名.local.pid. Please remove the file manually and start /usr/local/Cellar/mysql/8.0.21/bin/mysqld_safe again; mysqld daemon not started /usr/local/Cellar/mysql/8.0.21/bin/mysqld_safe: line 144: /usr/local/var/mysql/ユーザー名.local.err: Permission denied ERROR! The server quit without updating PID file (/usr/local/var/mysql/ユーザー名.local.pid).
下手な説明で申し訳ございません。助けて頂けると助かります。
よろしくお願い申し上げます。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。