我最初在Laravel 4.2中开发我的应用程序,但后来决定将其转移到5.0版本,这样它就涵盖了5.0超过4.2的更多变化和优势。
我正在尝试运行我的迁移,但我得到了错误:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
我对此进行了研究,并注意到了这是怎么回事,因为我正在为我的服务器运行MAMP,而不是流浪者和家园。我并没有抨击这两种方法的用途,但在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
在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', ''),
谢谢,使用帮助我解决迁移问题
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.hp:
use Illuminate'Support'Facades'Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
我创建了一个StackOverflow帐户,只是为了回答这个问题,也许可以帮助防止有人经历我所经历的痛苦。
我在网上找到的答案包括将127.0.0.1更改为localhost,将端口从3306更改为33060,反之亦然,以及确保unix_socket正确。
解决我问题的解决方案正在改变:
DB_CONNECTION=mysql
DB_HOST=localhost
至
DB_CONNECTION=mysql
DB_HOST=mysql
我希望这能帮助到其他人。我花了4个小时才找到这个显而易见的解决方案。。。在一段浏览量低于1000次的不知名YouTube视频中,它被发现了1分29秒。