在 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&useUnicode=true&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 文件中的任何内容。
首先只是为了系统配置状态,我有 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&useUnicode=true&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 文件中的任何内容。