Lumen使用artisan migrate时出现错误

4

我是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

I get:

[InvalidArgumentException]        
Database [Lumen] not configured.

这是我的.env文件。
DB_CONNECTION=mysql
DB_HOST=localhost 
DB_PORT=3306
DB_DATABASE=Lumen
DB_USERNAME=root
DB_PASSWORD=root

我在Stack Overflow上看到了其他问题,并尝试了解决方案,例如配置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();
4个回答

0

你是否忘记启用dotenv变量了?在你的bootstrap/app.php文件中,你可以通过取消以下行的注释来启用环境变量:

Dotenv::load(__DIR__.'/../');

Lumen关于数据库的文档


1
我已经将 Dotenv::load(DIR.'/../'); 的注释去掉。 - user2537792

0
如果你在macOS上使用MAMP,可以将以下代码添加到你的.env文件中:
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

而且您不需要修改任何MAMP的配置。


0
经过一番折腾,我终于找到了答案。
问题出在MAMP上,mysql的pdo socket没有在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=

包含那行代码解决了我所有的问题。

0
对于那些正在尝试使用Lumen的新手们,在经历了3个悲惨的小时之后,我终于解决了这个问题。问题不在你身上,而是在MAMP上!
一直以来,MAMP没有使用默认的80和3306端口进行web和mysql服务。所以点击那个按钮就可以了。就是这样!我很快会在我的博客上发布这篇文章 :D

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接