一点上下文:我正在尝试流动,但是tomcat在填充数据库时在某个点阻塞,通常的异常文本墙归结为这篇文章的标题。很长一段时间以来,我第一次将手放在tomcat上,我可能会错过明显的东西。
更新:这个查询现在有效。
CREATE TABLE flowable.FLW_EVENT_DEPLOYMENT (
ID_ VARCHAR(255) NOT NULL,
NAME_ VARCHAR(255) NULL,
CATEGORY_ VARCHAR(255) NULL,
DEPLOY_TIME_ datetime(3) NULL,
TENANT_ID_ VARCHAR(255) NULL,
PARENT_DEPLOYMENT_ID_ VARCHAR(255) NULL,
CONSTRAINT PK_FLW_EVENT_DEPLOYMENT PRIMARY KEY (ID_)
)
我所做的:我从 utf8mb4 切换到普通的旧 utf8,这要归功于“我知道 UTF8mb4 最多只能支持 VARCHAR(191)”(感谢@Lennart 让我更加思考这个问题)。所以有进展,但我稍后在另一个查询中遇到了同样的错误:
CREATE UNIQUE INDEX ACT_IDX_EVENT_DEF_UNIQ ON flowable.FLW_EVENT_DEFINITION(KEY_, VERSION_, TENANT_ID_)
这三列分别是 varchar(255) utf8_general_ci、int(11)、varchar(255) utf8_general_ci。
Tomcat 8.5.61
mariadb 10.4.17
我发现了很多建议的解决方案,但似乎没有一个适用于我的 mariadb 版本,innodb-large-prefix=ON
特别是已被弃用,尝试了一些不同的排序规则但没有成功。我已经在这上面花了很多时间,也尝试将 mariadb 连接器换成 mysql 连接器,以排除库本身的错误。
例如,我在这里尝试了接受的解决方案无济于事,可能是因为:
- innodb_file_format 已弃用且无效。它可能会在未来的版本中被删除。
- innodb_file_format_max 令人惊讶地导致配置检查错误,Antelope 无论如何都已被弃用,mariadb 不会将它用于新表
- 出于兼容性目的,innodb_large_prefix 在 10.3.1 中已删除,并在 10.4.3 中恢复为已弃用和未使用的变量。
使用 ENGINE=InnoDB,而不是 MyISAM。您更改设置的尝试没有用,因为您没有将 InnoDB 用于相关表。
在创建表之前,可以在 my.cnf 中将其指定为默认值。否则在
CREATE TABLE
.另外,不要盲目使用 255,而是使用合理的限制。