我是Lumen的新手,当我尝试使用时:
php artisan migrate
我收到以下错误。
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
如果我将'localhost'更改为'127.0.0.1',我会收到此错误:
[PDOException]
SQLSTATE[HY000] [2002] Connection refused
如果我使用:
php artisan migrate --database=Lumen
我明白了:
[InvalidArgumentException]
Database [Lumen] not configured.
这是我的.env文件
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=Lumen
DB_USERNAME=root
DB_PASSWORD=root
我已经阅读了有关堆栈溢出的其他问题,并尝试了解决方案,即配置php版本和检查mysql.sock的路径,这一切都很好。我正在使用完整路径,我的PHP版本是正确的。
我正在使用MAMP,并且有一个名为“Lumen”的数据库(目前没有表格)。
使用终端创建迁移:
php artisan make:migration --create=items create_items_table
我正在使用php artisan serve(服务器8000)来查看我可以查看的项目。
MAMP is on:
apache=80
nginx=80
mysql=3306
我为Laravel项目使用了相同的配置,并且工作正常。但laravel确实有一个database.php文件,里面有所有细节。
我希望有足够的信息,非常感谢任何帮助!
提前致谢
编辑:这是我的app.php文件,其余部分保持不变。
require_once __DIR__.'/../vendor/autoload.php';
Dotenv::load(__DIR__.'/../');
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
$app->withFacades();
$app->withEloquent();
答案 0 :(得分:0)
您是否可能忘记启用dotenv变量?在bootstrap / app.php文件中,您可以通过取消注释以下行来启用环境变量:
Dotenv::load(__DIR__.'/../');
答案 1 :(得分:0)
经过大量的调整后,我找到了答案。
问题在于MAMP,mysql的pdo套接字不在php.ini文件中,必须包含在那里。
[Pdo_mysql]
; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/pdo_mysql.cache_size
pdo_mysql.cache_size = 2000
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/pdo_mysql.default-socket
pdo_mysql.default_socket=
包括该行修复了我的所有探针。
答案 2 :(得分:0)
对于那些尝试了流明的新人,经过3个悲伤的小时后,我终于解决了这个问题。不是你,而是MAMP!
此时,MAMP没有使用默认端口80和3306用于web和mysql。所以单击该按钮。就这样!我很快就会在我的博客上发布这个:D
答案 3 :(得分:0)
如果您在macOS上使用MAMP,则可以将此代码添加到您的 .env 文件中:
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
您无需修改任何MAMP的配置。