问题
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