2015-03-27 10 views
6

Wcześniej opracowywałam swoją aplikację w wersji Laravel 4.2, ale od tego czasu postanowiłam przenieść ją do wersji 5.0, tak aby obejmowała znacznie więcej zmian i atutów niż 5,0 w wersji 5.0.PHP Artisan Migracja z MAMP i Unix Socket

Próbuję uruchomić mój migratiosn jednak otrzymuję błąd:

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

Spojrzałem na to i zauważyłem, jak to jest, bo biegnę MAMP dla mojego serwera zamiast włóczęgi i zagrody. Nie używam tych dwóch, ale w tym momencie czuję się bardziej komfortowo z MAMP, dopóki mnie nie zawiedzie. Powód dla którego znam MAMP wynika z konieczności deklarowania wartości gniazda unix do użycia.

Teraz na moim 4.2 wersji mojej aplikacji mam następujące:

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

Z moim laravel wersji 5.0 Robię wykorzystanie pliku .env dla moich zmiennych środowiska i nie wiem, jak mam zrobić tak, aby wiedział, jak używać wartości gniazda unix.

Czy ktoś mnie podpowiedział, jak powinienem to przyjąć w nowej wersji lub lepszy sposób dodania go do ustawień, tak, że nie muszę tego robić?

+0

i czy jesteś pewien, że gniazdo unix znajduje się w tym miejscu? czy zainstalowałeś MAMP w lokalizacji innej niż domyślna? –

+0

Tak i wiem, że to jest poprawne. – user3732216

+0

tak do czego? Śmiem twierdzić, że nie ma pliku o nazwie 'mysql.sock' na komputerze w określonym miejscu. Komputery nie popełniają błędów w tym zakresie. Jeśli mówi, że nie ma tam pliku, dzieje się tak dlatego, że nie ma tam pliku.Jeśli zainstalowałeś MAMP w lokalizacji innej niż domyślna, możesz rozwiązać problem, aktualizując konfigurację dobrą ścieżką do pliku 'mysql.sock', ale MAMP nie zaleca instalowania ich oprogramowania w innym miejscu, ponieważ wiele problemów takich jak ten powstanie. –

Odpowiedz

19

Spróbuj tego:

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

W .env dodać

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

Właśnie to przetestowałem. Pracował jak urok! – Troy

+0

Należy zauważyć, że niektóre instalacje Laravel 5 nie zawierają domyślnie pliku config/database.php. Nie wiem dlaczego, ale musiałem go stworzyć i nie jest to wspomniane w dokumentacji Laravel 5 (którą mogłem znaleźć). – russellmania

+0

Dzięki za udostępnianie rozwiązań. Używam Laravel 5.3.x –

3

choć dość stare pytanie, ale może pomóc innym. więc dodawanie odpowiedzi.

jest nawet proste rozwiązanie. dodać to do ur .env plik

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

Dzięki, pomaga naprawić problem migracji dla mnie za pomocą:

MAMP PRO 4.2 
Laravel 5.5 

wewnątrz .env pliku:

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

wewnątrz 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, 
    ], 
], 

Nie zapomnij dodać do PP/Dostawcy/AppServiceProviders.php:

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

W laravel 5.5 zmiany unix_socket do DB_SOCKET

wewnątrz .env pliku:

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

wewnątrz 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', ''), 
Powiązane problemy