2015-03-27 26 views
6

Ich entwickelte meine Anwendung ursprünglich in Laravel 4.2, aber habe mich seitdem dafür entschieden, es auf die Version 5.0 zu verschieben, so dass es viel mehr Änderungen und Stärken abdeckt, die 5.0 über 4,2 hat.PHP Artisan migrieren mit MAMP und Unix Socket

Ich versuche, meine migratiosn zu laufen aber ich die Störung erhalte:

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

Ich sah in diesem und bemerkt, wie es ist, weil ich MAMP für meinen Server statt Vagabund und Heimstätte laufen bin. Ich klopfe nicht den Gebrauch dieser zwei an, aber ich fühle mich an diesem Punkt mit MAMP wohler, bis es mir versagt. Der Grund, warum ich seinen MAMP kenne, ist, dass ich den zu verwendenden Unix-Socket-Wert deklarieren muss.

nun auf meiner 4.2 Version meiner Anwendung habe ich folgendes:

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

Mit meiner Laravel 5.0-Version die ich für meine Umgebungsvariablen Verwendung der .env Datei mache und nicht sicher, wie ich tun muss dies, so dass es weiß, den Unix-Socket-Wert zu verwenden.

Kann mir jemand sagen, wie ich das in die neue Version übernehmen sollte oder eine bessere Möglichkeit, es in die Einstellungen einzufügen, damit ich das nicht machen muss?

+0

und sind Sie sicher, dass der Unix-Socket an dieser Stelle ist? Hast du MAMP an einem anderen Ort installiert? –

+0

Ja und ich weiß es ist richtig. – user3732216

+0

ja was? Ich wage zu sagen, dass es an dem angegebenen Ort keine Datei namens "mysql.sock" auf Ihrem Computer gibt. Computer machen dabei keine Fehler. Wenn dort steht, dass dort keine Datei ist, liegt es daran, dass dort keine Datei ist.Wenn Sie Ihren MAMP an einem nicht standardmäßigen Speicherort installiert haben, können Sie Ihr Problem lösen, indem Sie Ihre Konfiguration mit dem guten Pfad zur 'mysql.sock'-Datei aktualisieren, aber MAMP selbst empfiehlt nicht, ihre Software woanders zu installieren, da viele Probleme wie z wie dieser wird entstehen. –

Antwort

19

Try this:

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

In .env allerdings recht alte Frage

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

Habe das gerade getestet. Lief wie am Schnürchen! – Troy

+0

Es sollte beachtet werden, dass einige Installationen von Laravel 5 standardmäßig nicht mit einer config/database.php Datei ausgeliefert werden. Ich weiß nicht warum, aber ich musste einen erstellen, und das ist nicht wirklich in der Laravel 5 Dokumentation erwähnt (die ich finden konnte.) – russellmania

+0

Danke für das Teilen von Lösungen. Ich benutze Laravel 5.3.x –

3

hinzufügen, aber immer noch anderen helfen können. also Antwort hinzufügen.

gibt es sogar eine einfache Lösung. fügen Sie diese Datei .env

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

Danke, Hilfe fix Migrationsproblem für mich ur mit:

MAMP PRO 4.2 
Laravel 5.5 

innerhalb .env Datei:

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 

innerhalb 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, 
    ], 
], 

Vergessen Sie auch nicht zu einem hinzufügen pp/Provider/AppServiceProviders.php:

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

In Laravel 5.5 die unix_socket Änderungen

innerhalb .env Datei DB_SOCKET:

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

innen 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', ''),