使用工匠迁移时出现流明错误

时间:2015-08-10 10:55:11

标签: php mysql migration eloquent lumen

我是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();

4 个答案:

答案 0 :(得分:0)

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

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

Lumen Documentation about databases

答案 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

enter image description here

答案 3 :(得分:0)

如果您在macOS上使用MAMP,则可以将此代码添加到您的 .env 文件中:

DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

您无需修改​​任何MAMP的配置。