Laravel 5.1 - Connecting to MySQL Database (MAMP)

匿名 (未验证) 提交于 2019-12-03 01:05:01

问题:

There are topics online that are discussing this problem however, I couldn't find any tidy explanation of the problem or any solid answers for the question. What I am trying to achieve is connecting Laravel 5.1 to MySQL Database of MAMP.


In my config>app.php:

   'default' => env('DB_CONNECTION', 'mysql'),      'mysql' => [         'driver'    => 'mysql',         'host'      => 'localhost:8889',         'database'  => 'test',         'username'  => 'root',         'password'  => 'root',         'charset'   => 'utf8',         'collation' => 'utf8_unicode_ci',         'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',         'prefix'    => '',         'strict'    => false,     ], 

In my .env:

      DB_HOST=localhost       DB_DATABASE=test       DB_USERNAME=root       DB_PASSWORD=root 

I also have .env.example: (which I believe has no functionality)

      DB_HOST=localhost       DB_DATABASE=homestead       DB_USERNAME=homestead       DB_PASSWORD=secret 

I also have create_users_table.php and create_password_resets_table.php in my database>migrations (even though I did not run any migration:make)


MAMP is directing and running the server successfully as it loads the project on localhost.


Here is my MAMP settings:

And the test database is created (with tables in it which I have previously created and used in my other projects, not Laravel.)


Even though everything seems correct to me, when trying to submit Auth form, I am getting this error:

PDOException in Connector.php line 50: could not find driver

  1. in Connector.php line 50

  2. at PDO->__construct ('mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=test', 'root', 'root', array('0', '2', '0', false, false)) in Connector.php line 50

  3. at Connector->createConnection('mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=test', array('driver' => 'mysql', 'host' => 'localhost:8889', 'database' => 'test', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock', 'prefix' => '', 'strict' => false, 'name' => 'mysql'), array('0', '2', '0', false, false)) in MySqlConnector.php line 22

and so on...

回答1:

Found my answer. Here is a way to fix it:

  • Start MAMP
  • On the top left, go to "MAMP" -> "Preferences"
  • Go to the "PHP" tab
  • Tick PHP 5.5.17 (or whatever you have) instead of the one which is ticked by default (5.6.1 -> 5.5.17 with he latest version of MAMP)


回答2:

It was pretty simple for me, I added :8889 to the localhost in the .env file.

DB_HOST=localhost:8889

This is because in the MAMP preferences, :8889 is the default port.



回答3:

The most important thing for me was defining the UNIX socket. Because I have another MYSQL on my machine - Laravel was trying to connect to a database in that MYSQL process.

Defining the UNIX for the MAMP database to be used worked perfectly. Try adding this to your MYSQL configuration in database.php

   'mysql' => [       'driver' => 'mysql',       'host' => env('DB_HOST', '127.0.0.1'),       'port' => env('DB_PORT', '3306'),       'database' => env('DB_DATABASE', 'forge'),       'username' => env('DB_USERNAME', 'forge'),       'password' => env('DB_PASSWORD', ''),       'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',       'charset' => 'utf8mb4',       'collation' => 'utf8mb4_unicode_ci',       'prefix' => '',       'strict' => true,       'engine' => null,     ], 


回答4:

On mac or unix you have to include the socket path in the configuration database.php file

i.e 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!