PHP Artisan Migrate with MAMP and Unix Socket

依然范特西╮ 提交于 2019-12-20 09:45:02

问题


I was developing my application originally in Laravel 4.2 but have since decided to move it to the 5.0 version so that it covers a lot more changes and strengths that 5.0 has over 4.2.

I am trying to run my migratiosn however I am getting the error:

[PDOException]
  SQLSTATE[HY000] [2002] No such file or directory

I looked into this and noticed how it is because I'm running MAMP for my server instead of vagrant and homestead. I'm not knocking the uses of those two but I at this point feel more comfortable with MAMP until it fails me. The reason I know its MAMP is because of needing to declare the unix socket value to be used.

Now on my 4.2 version of my application I have the following:

'mysql' => array(
    'driver'    => 'mysql',
    'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
    'host'      => getenv('DB_HOST'),
    ...
),

With my Laravel 5.0 version I am making use of the .env file for my Environment variables and not sure how I need to do this so that it knows to use the unix socket value.

Cans someone clue me into how I should adopt this into the new version or a better way to add it into the settings so that I don't have to do that?


回答1:


Try this:

'mysql' => array(
'driver'    => 'mysql',
'unix_socket'   => getenv('UNIX_SOCKET'),
'host'      => getenv('DB_HOST'),
...
),

In .env add

UNIX_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock



回答2:


though quite old question, but still can help others. so adding answer.

there is even simple solution. add this to ur .env file

DB_HOST=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock



回答3:


In laravel 5.5 the unix_socket changes to DB_SOCKET

inside .env file :

DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

inside config/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' => env('DB_SOCKET', ''),



回答4:


Thanks, help fix migration issue for me using:

MAMP PRO 4.2
Laravel 5.5

inside .env file:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=<database name>
DB_USERNAME=<username - default root>
DB_PASSWORD=<password - default root>
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

inside config/database.php:

'connections' => [

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

Also don't forget to add to app/Providers/AppServiceProviders.php:

use Illuminate\Support\Facades\Schema;
public function boot()
{
   Schema::defaultStringLength(191);
}



回答5:


I created a StackOverflow account solely to answer this question, and maybe help prevent someone going through the pain that I went through.

Answers that I found online ranged from changing 127.0.0.1 to localhost, changing the port from 3306 to 33060 and vice-versa, and making sure the unix_socket was correct.

The solution that solved my problem was changing:

DB_CONNECTION=mysql
DB_HOST=localhost

to

DB_CONNECTION=mysql
DB_HOST=mysql

I hope this helps someone out there. It took me 4 hours to find this painfully obvious solution...and it was found 1min29s into an obscure YouTube video with under 1000 views.



来源:https://stackoverflow.com/questions/29305502/php-artisan-migrate-with-mamp-and-unix-socket

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