Docker installation
-
Hello there,
Great work on the application and open-sourcing it!!
Quick question related to the installation - It looks like the docker image install both the application as well as the database. Just wondering if I can install the application without the database (mysql) and plug in an external mysql db after/during the installation?
The container platform that I plan to use doesn't support hosting mysql and I already have a db instance running that I'm planning to use. Is this possible?
Thanks!
Tej -
Ok, I've tried updating DockerFile to remove the database related changes and the startup appeared to be working. During Installation Assistant step, when I attempted to connect to a database (hosted in Google Cloud), setup failed with the message -
"Your database login does not have the privileges to create table on the database foobar. Ask your hosting provider: Storage engine MyISAM is disabled (Table creation is disallowed)."
https://cloud.google.com/sql/docs/mysql/diagnose-issues#database_engines
MySQL version: MySQL 5.7I also looked at your code and you are determining the engine based on a query at https://github.com/webkul/hotelcommerce/blob/v1.5.x/classes/db/MySQL.php#L314. I ran the same query on my table and I see that InnoDB is the default engine. Please see the output below -
mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| CSV | YES | CSV storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+How can we use InnoDB as storage engine instead of MyISAM in the app with the db queries?
Thanks!
-
Hi there,
Thank you for the detailed info.
Ideally it should work with both engines. I will try to replicate the issues at my end and will get back to you shortly.Regards
-
This post is deleted! -
@tejastra
We replicate the issue at our end, got the same error you were getting while connecting cloud SQL database with qloapps :-Storage engine MyISAM is disabled (Table creation is disallowed).
Here is the workaround of your problem:-
- Open the file located at :- PATH_TO_QLOAPPS_FILES/classes/db/DbMySQLi.php
look for this funtion :-
checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine = null)
under this look for -
if ($engine === null) {
$engine = 'MyISAM';
}and patch like this:
if ($engine === null) {
$engine = 'InnoDB';
}save the changes, and then you should be able to successfully connect your Cloud SQL database with Qloapps.
Do let us know how it goes,
Thanks - Open the file located at :- PATH_TO_QLOAPPS_FILES/classes/db/DbMySQLi.php