在 moqui-1.6.1 中,配置使用 mysql 和加载数据

In moqui-1.6.1, configuration to use mysql and loading data

首先只是为了系统配置状态,我有 mysql 服务器版本 5.5.48 和最新版本的 mantle 和 moqui-framework,
我正在尝试配置 moqui 以使用 mysql,我将连接器复制到 runtime/lib 然后将 mysql 配置的以下行添加到 runtime/conf/MoquiDevConf.xml

<entity-facade crypt-pass="MoquiDefaultPassword:123456">
    <!-- add datasource elements here to configure databases -->
    <datasource group-name="transactional" database-conf-name="mysql" schema-name="moqui">
    <inline-jdbc jdbc-uri="jdbc:mysql://127.0.0.1:3306/moqui?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
                 jdbc-username="testUser" jdbc-password="123456" pool-minsize="2" pool-maxsize="50"/>
    </datasource>
</entity-facade>  

在构建和 运行 加载时,出现此错误 -

Loading entity data from [classpath://entity/BasicEntities.xml]
--- 20:35:44.310 [           main] ERROR           org.moqui.impl.entity.EntityDbMeta
 SQL Exception while executing the following SQL [CREATE TABLE     moqui.ENUMERATION_TYPE (ENUM_TYPE_ID VARCHAR(255) CHARACTER SET utf8     COLLATE utf8_general_ci NOT NULL, DESCRIPTION VARCHAR(255) CHARACTER SET     utf8 COLLATE utf8_general_ci, LAST_UPDATED_STAMP DATETIME(3), CONSTRAINT     PK_ENUMERATION_TYPE PRIMARY KEY (ENUM_TYPE_ID)) ENGINE InnoDB CHARACTER     SET utf8 COLLATE utf8_general_ci]:     com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an     error in your SQL syntax; check the manual that corresponds to your MySQL     server version for the right syntax to use near '(3), CONSTRAINT     PK_ENUMERATION_TYPE PRIMARY KEY (ENUM_TYPE_ID)) ENGINE InnoDB CH' at line     1
--- 20:35:44.310 [           main] WARN      moqui.impl.context.TransactionFacadeImpl
 Rollback only not set on current transaction, status is     STATUS_NO_TRANSACTION
--- 20:35:44.310 [           main] INFO            org.moqui.impl.entity.EntityDbMeta

-- 感谢您的帮助:)

当前的 MySQL 配置(在 MoquiDefaultConf.xml 中)对日期时间列使用 DATETIME(3) 类型。这是最新 MySQL 的设置,因为在某个版本(5.7 IIRC)之后, DATETIME 类型默认不再具有毫秒值。不幸的是,在此之前的版本不支持指定亚秒精度,因此没有适用于 pre-5.7 和 post-5.7 版本的设置。感谢 Oracle!

您可以使用较新版本的 MySQL,或更改 Moqui Conf XML 文件,使类型为纯 DATETIME 而不是 DATETIME(3)。您可以更改 MoquiDefaultConf.xml 文件,或使用运行时 conf XML 文件中的相同元素(如 MoquiDevConf.xml、MoquiProductionConf.xml 等)以及数据源设置来设置它。整个 XML 文件在运行时合并,因此您可以在运行时 conf 文件中覆盖 MoquiDefaultConf.xml 文件中的任何内容。