web-dev-qa-db-ja.com

PHP MAMPとUnixソケットを使用したArtisanMigrate

私はもともとLaravel 4.2でアプリケーションを開発していましたが、5.0が4.2を超える多くの変更と長所をカバーするように、5.0バージョンに移行することにしました。

Migratiosnを実行しようとしていますが、エラーが発生します。

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

これを調べたところ、vagrantやHomesteadの代わりにサーバーでMAMPを実行しているため、どのようになっているのかがわかりました。私はこれら2つの使用法をノックしているわけではありませんが、この時点では、失敗するまで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ソケット値を使用することを認識できるようにこれを行う必要がある方法がわかりません。

誰かが私にこれを新しいバージョンに採用する方法、または私がそれをする必要がないように設定に追加するためのより良い方法を教えてもらえますか?

9
user3732216

これを試して:

'mysql' => array(
'driver'    => 'mysql',
'unix_socket'   => getenv('UNIX_SOCKET'),
'Host'      => getenv('DB_Host'),
...
),

.envに追加

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

かなり古い質問ですが、それでも他の人を助けることができます。だから答えを追加します。

簡単な解決策もあります。これをur.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
DerekOBrien

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