Hello,
I've setup a docker with: php:7.4.24-apache, mariadb:10.3.27. The routing, controller and views all are working because I can see the results. When I try to connect to the database I get "Main connection [MySQLi]: Connection refused". I am able to connect to the database from the MariaDB docker CLI and a desktop application called TablePlus. After all the googling I will attempt to answer all the same questions people seem to ask. Not saying I've caught them all but these are the most common I've seen.
- The mysqli driver is installed and should be working. I validated this by view the phpinfo() on a view I created.
- The credentials to logon to the DB I know must be correct since I can use the CLI and TablePlus to logon to the database. At first TablePlus wouldn't connect but then realized I didn't have my port specified in the docker. I've resolved the port config and now TablePlus connects. I retried my page to connect to the DB but same error.
- I've triple checked my DB settings in the .env file and all should be good based on what I've found.
- I originally had "localhost" set for hostname but that returned a different error (Main connection [MySQLi]: No such file or directory) but searching for answer said to switch to local IP address.
I'm a noob with docker so there is probably something I've missed...yet everything I've read indicates it is setup correctly. Think I might installed mysqladmin to see if it can connect to rule out connectivity with in the container.
Here is my .env file:
Code:
database.default.hostname = '127.0.0.1'
database.default.database = 'friends'
database.default.username = 'root'
database.default.password = 'junk'
database.default.DBDriver = 'MySQLi'
database.default.DBPrefix = 'f_'
database.default.DBDebug = true
database.default.charset = 'utf8mb4'
database.default.DBCollat = 'utf8mb4_unicode_ci'
charset and DBCollat are the same value I used in the docker config for MariaDB.
Here is the code for calling the DB:
PHP Code:
// initialize database class
$db = \Config\Database::connect();
// Check connection
if ($db->connect_error)
{
exit("Connection failed: " . $db->connect_error);
}
PHP Code:
echo "Connected successfully";
// fetch listing of database tables
$tables = $db->listTables();
foreach ($tables as $table) {
echo $table;
}
// close db connection
$db->close();
Pretty sure it doesn't get past the first line. I have not modified my Database.php file in the Config folder. I'm at a loss on what to check next.
Thank you for your time and support.