1

首先只是为了系统配置状态,我有 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

- 谢谢你的帮助 :)

4

1 回答 1

3

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

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

于 2016-03-02T22:11:29.157 回答