0
votes

I have an existing DB which was made with a different framework, and now I am extending the functionality to make Laravel API to work with that DB. I have successfully connected to the DB, and API responses are correct (which means .env values are set right), however I get an error when trying to do the new migration.

This is the error I am getting:

Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Operation timed out (SQL: select * from information_schema.tables where table_schema = xxx and table_name = l_migrations)

at /Users/xxx/Projects/xxx/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664 660| // If an exception occurs when attempting to run a query, we'll format the error 661| // message to include the bindings with SQL, which will make this exception a 662| // lot more helpful to the developer instead of just the database's errors. 663| catch (Exception $e) {

664| throw new QueryException( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668|

Exception trace:

1 PDOException::("SQLSTATE[HY000] [2002] Operation timed out") /Users/xxx/Projects/xxx/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

2 PDO::__construct("mysql:host=192.168.0.1;port=3306;dbname=xxx", "xxx", "xxx", []) /Users/xxx/Projects/xxx/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

I have also tried doing the php artisan migrate:install but the migrations table won't get created and I suppose that is the issue.

On the side note, I am using DB_PREFIX in .env and have set it in database.php like this:

'prefix' => env('DB_PREFIX', '')

On the other side note, DB is on a separate Docker container.

1
My guess would be that your laravel environment cannot find / connect to the database. Check your DB host, port and whether you can access it from the other docker instance (ping it in a script or something). Also, make sure your Mysql DB allows connections for the specified user from outside of localhost stackoverflow.com/a/14779244/3240068. Unfortunately I cannot give you docker specific answers, but you could at least debug and see if having DB on a separate docker container is indeed the problem, and if so, seek help specifically for this docker situation.Criss
Yeah, but what is strange is that I can fetch data from the DB. So connectivity and credentials shouldn't be a problem. Model::all() actually gets all models from the same DB.Norgul
Have you checked permissions for the user? Perhaps the user does not have create priviliges? Outside of that, I have nothing more to suggest.Criss

1 Answers

-1
votes

If you are on apache increase time out to 600 or 1000 in apache config file.