laravel — PHP Artisan Migrate с MAMP и сокетом Unix

Первоначально я разрабатывал свое приложение на Laravel 4.2, но с тех пор решил переместить его на версию 5.0, чтобы оно охватывало гораздо больше изменений и преимуществ, чем 5.0 имеет более 4.2.

Я пытаюсь запустить мой migratiosn, однако я получаю сообщение об ошибке:

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

Я посмотрел на это и заметил, как это происходит, потому что я использую MAMP для своего сервера вместо vagrant и усадьбы. Я не отказываюсь от использования этих двух, но сейчас я чувствую себя более комфортно с MAMP, пока он не подведет меня. Причина, по которой я знаю его MAMP, заключается в необходимости объявления значения сокета unix для использования.

Теперь в моей версии 4.2 моего приложения у меня есть следующее:

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

В моей версии Laravel 5.0 я использую файл .env для своих переменных окружения и не уверен, как мне нужно это сделать, чтобы он знал, как использовать значение сокета unix.

Может кто-нибудь подсказать мне, как мне перенести это в новую версию или как лучше добавить ее в настройки, чтобы мне не пришлось это делать?

6

Решение

Попробуй это:

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

В .env добавить

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

Другие решения

хоть и довольно старый вопрос, но все же может помочь другим. поэтому добавлю ответ.

есть даже простое решение. добавить это в ваш .env файл

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

Спасибо, помогите решить проблему с миграцией для меня, используя:

MAMP PRO 4.2
Laravel 5.5

внутри .env файла:

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

внутри 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,
],
],

Также не забудьте добавить в app / Providers / AppServiceProviders.php:

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

В laravel 5.5 unix_socket меняется на DB_SOCKET

внутри .env файла:

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

внутри 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', ''),
0
По вопросам рекламы [email protected]