Первоначально я разрабатывал свое приложение на 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.
Может кто-нибудь подсказать мне, как мне перенести это в новую версию или как лучше добавить ее в настройки, чтобы мне не пришлось это делать?
Попробуй это:
'mysql' => array(
'driver' => 'mysql',
'unix_socket' => getenv('UNIX_SOCKET'),
'host' => getenv('DB_HOST'),
...
),
В .env добавить
UNIX_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
хоть и довольно старый вопрос, но все же может помочь другим. поэтому добавлю ответ.
есть даже простое решение. добавить это в ваш .env файл
DB_HOST=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock
Спасибо, помогите решить проблему с миграцией для меня, используя:
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);
}
В 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', ''),