Lumen error when using artisan migrate

我怕爱的太早我们不能终老 提交于 2020-01-02 05:50:28

问题


I'm new to Lumen and when I try to use:

php artisan migrate 

I get the following error.

[PDOException]                                    
SQLSTATE[HY000] [2002] No such file or directory  

If I change 'localhost' to '127.0.0.1' I get this error:

[PDOException]                             
SQLSTATE[HY000] [2002] Connection refused

If I use:

php artisan migrate --database=Lumen

I get:

[InvalidArgumentException]        
Database [Lumen] not configured.

Here is my .env file

DB_CONNECTION=mysql
DB_HOST=localhost 
DB_PORT=3306
DB_DATABASE=Lumen
DB_USERNAME=root
DB_PASSWORD=root

I've read other questions on stack overflow and have tried the solutions i.e. configuring php versions and checking the path to mysql.sock and it's all fine. I am using the full path and my PHP version is correct.

I am using MAMP and have a Database called 'Lumen' (there are no tables at the moment).

Created a migration using terminal:

php artisan make:migration --create=items create_items_table  

I am using php artisan serve (server 8000) to view my project, which I can view.

MAMP is on:
apache=80
nginx=80
mysql=3306

I used the same configuration for my Laravel project and that is working fine. But laravel does have a database.php file which has all the details inside of it.

I hope that's enough information, any help would be much appreciated!

Thanks in advance

EDIT: This is my app.php file, the rest is left untouched.

require_once __DIR__.'/../vendor/autoload.php';

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


$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);

$app->withFacades();
$app->withEloquent();

回答1:


Is it possible you forgot to enable the dotenv variables? In your bootstrap/app.php file you can enable the environment variables by uncommenting the following line:

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

Lumen Documentation about databases




回答2:


After a lot of fiddling about, I found the answer.

The problem was with MAMP, the pdo socket for mysql was not in the php.ini file and had to be included there.

[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=

Including that line fixed all my probelems.




回答3:


To the new guys out there trying out Lumen, after 3 sad hours, I finally solved this issue. It's not you, it's the MAMP!

All this time, MAMP was not using the default ports 80 and 3306 for web and mysql. So click that button. That's all! And I'm posting this on my blog soon :D




回答4:


If you're using MAMP on macOS you can just add this code in your .env file:

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

And you don't need to modify any MAMP's config.



来源:https://stackoverflow.com/questions/31917708/lumen-error-when-using-artisan-migrate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!