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.7

    I 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!


  • Global Moderator

    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:-

    1. 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