在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录 [重复]
Posted
技术标签:
【中文标题】在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录 [重复]【英文标题】:Setting up Laravel on a Mac php artisan migrate error: No such file or directory [duplicate] 【发布时间】:2013-10-28 20:06:34 【问题描述】:-
将一个完美运行的 laravel 项目从 git 拉入运行 MAMP 的 mac。项目在 linux 机器上完美运行。
作曲家安装
php artisan migrate,出现如下错误:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
注意: php -v 是 5.5 而 mysql -v 是 5.5 从终端 这是我的 config/database.php 的一部分
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
我尝试将 localhost 替换为 127.0.0.1 无济于事。请帮忙..
编辑: 我在 php.ini 中添加了这三行
mysql.default_socket = /var/run/mysqld/mysqld.sock
mysqli.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock
我还添加了这个符号链接:
sudo mkdir /var/mysql
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
但这并没有解决。我还从 git 中提取了一个全新的 laravel 项目,并在 composer install
然后 php artisan migrate
之后遇到了同样的错误
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
mac版本为10.7.4
【问题讨论】:
以前有人问过这个问题,搜索您的错误消息会给出很多问题和可能的答案。试试看。 ***.com/questions/2412009/…***.com/questions/6001592/… 感谢您的编辑和信息。我之前做过一些彻底的研究,在***.com/questions/2412009/… 添加了 php.ini 行和符号链接,但这并没有解决。我还从 git 中提取了一个全新的 laravel 项目,并在 composer install 然后 php artisan migrate 之后遇到了同样的错误 检查我的问题中的编辑......config/database.php
文件在哪里?
如果您使用的是宅基地/流浪者,请确保您有ssh
d 进入服务器。而不是从外部运行它。
【参考方案1】:
如果您使用的是 MAMP,请务必添加 unix_socket
键和 mysql.sock
驻留在 MAMP 中的路径值。
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'database' => 'database',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
【讨论】:
这对我有用。一切都很好,直到我出色地决定我想通过 Homebrew 在 Mavericks 上安装/配置 PHP。不用说,过去两周我一直在使用别名 phpmamp='/Applications/MAMP/../pathto/php'。不确定我对这个修复感觉良好,但它让我在没有别名的情况下重新启动并运行。谢谢! 我也使用自制软件,所以解决方案是在config/local/database.php
文件中添加 unix_socket 路径。
我添加了该行,但出现以下错误:[PDOException] SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
知道是什么问题吗?我看到密钥在 .env
文件中更新,而不是在 database.php
文件中。不确定这是否与它有关......
您可以使用此答案而不是添加套接字。 ***.com/a/12146144/662581
谢谢,我把这个添加到.env
:DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
【参考方案2】:
不要假设你的 unix_socket 会有所不同,试着找到它。
首先,获取您的 unix_socket 位置。
$ mysql -uroot -p
输入你的mysql密码并从命令行登录你的mysql服务器。
mysql> show variables like '%sock%';
+---------------+---------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------+
| socket | /opt/local/var/run/mysql5/mysqld.sock |
+---------------+---------------------------------------+
您的 unix_soket 可能不同。
那么您有 2 个解决方案来解决您的问题:
(1) 更改您的config/database.php
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'unix_socket' => '/opt/local/var/run/mysql5/mysqld.sock', //Your sock got from above
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
(2) 更改你的 php.ini,找到你的 php.ini
文件
<? phpinfo();
你可能安装了很多不同版本的php,所以请不要假设你的php.ini文件位置,从你的'phpinfo'中获取;
更改您的 php.ini:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
然后重启你的 apache 或 php-fpm。
【讨论】:
我从 MAMP 自己的 mysql 切换到 mariadb,您的解决方案是唯一有效的解决方案。 如果您在许多项目中工作,php.ini 解决方案可以有效地工作。您不需要在每个项目中更改 database.php 文件,只需编辑 php.ini 文件。感谢您的解决方案【参考方案3】:遇到了同样的问题,但它现在对我有用。
如果还有人遇到问题,试试这个:
确保您的bootstrap/start.php
包含您的实际主机名,而不是您的虚拟主机的名称。在终端中输入hostname
以获取您的主机名。由于它是一个数组,我相信您可以同时输入您的主机名和虚拟主机的名称。
将“localhost”替换为“127.0.0.1”。
【讨论】:
用“127.0.0.1”替换“localhost”对我有用。 :-)【参考方案4】:如果你使用的是 XAMPP,解决方法是:
'mysql' => array(
'driver' => 'mysql',
'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
'host' => 'localhost'
)
【讨论】:
【参考方案5】:这适用于我在 Laravel 5.0 中,更改 .env 文件中的 DB_HOST=127.0.0.1:33060。
其他答案不起作用...
【讨论】:
【参考方案6】:如果你使用的是 Laravel 5.1.11 版本 + MAC + MAMPP
您必须在文件“yourapp”/app/config/database.php 中添加“Unix_socket”
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
Unix_socket 参数已添加到上面的 mysql 配置驱动器中。
【讨论】:
但是我找不到套接字文件。 你的mampp版本是什么【参考方案7】:对于 Laravel 5.0+,将 .env 文件中的 localhost
更改为 127.0.0.1
,然后再使用 Unix 套接字等 - 这对我有用。
新手当心:对于使用 Laravel 5 和使用旧学习资料的任何人,请注意文件夹结构与以前的版本相比有相当大的变化,尽管这似乎是为了更好 - 请查看这篇文章 https://mattstauffer.co/blog/laravel-5.0-directory-structure-and-namespace
【讨论】:
【参考方案8】:另一种解决方案是在主机密钥中添加端口号。在这种情况下,MAMP 默认使用 8889:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost:8889',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
【讨论】:
以上是关于在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac 上安装 Laravel 会抛出 laravel,即使在设置 PATH 后也找不到
尝试在laravel 5.1 mac上安装php phantom js时,Composer安装错误
/Applications/XAMPP/xamppfiles/bin/php - Xampp Mac 上的 Laravel
我如何在 mac high sierra 上安装 Laravel 8