今天尝试安装个人网站,或者说是内容管理系统,wordpress 是PHP的,所以上网找了一个免费的,在知乎上基于Java的开源CMS有哪些推荐,各自特点是什么 - 知乎 (zhihu.com)
找了这个opencms,据说是免费,安装包两百多兆,解压后,按照里面文件的提示,copy到tomcat目录下,然后启动tomcat, 文件由servlet解压为目录,然后在浏览器中输入地址localhost:8080/opencms/setup, 开始安装,
在这个页面,开始提示找不到DB,把mysql的bin目录放在系统变量后解决。
接着,提示root密码无效,btsoft自带的mysql5.5 在终端可以无需密码进入,也可以用密码进入,可能无密码进入的不是root ?
在宝塔面板中改密码后解决。
然后开始继续操作,这回提示
java.sql.SQLSyntaxErrorException: (conn=22) Specified key was too long; max key length is 1000 bytes
在MySQL启动配置文件my.ini中添加或修改:
default-storage-engine=INNODB
原因:
activiti在MySQL中对表建立索引时,key的长度超过1000 bytes了,由于MySQL默认使用MyISAM engine,而MyLSAM引擎会有key长度的限制, 超过1000bytes就会报错,所以要将Mysql引擎修改为Innodb。
然后
mysql索引长度超过767bytes, Specified key was too long; max key length is 767 bytes
原因:
msyql5.6及以前版本, 默认索引最大长度767bytes,若使用utf8mb4格式编码(utf8字符占用3字节,utf8mb4字符占用4字节), 则单个字段长度不能超过191, 5.7及之后版本, 限制放开到3072 bytes。
PS: 由于mysql的utf8编码并不是真正UTF-8,详细介绍请自行百度google,推荐使用utf8mb4,这个是通常所说的UTF-8。而utf8mb4的字符占用4字节,所以相较于utf8的占用3字节,更容易出现上面这种索引长度超限的问题。
在5.6及之前版本,若有索引超限的情况,可使用如下方法:
查看配置:
show variables like 'innodb_large_prefix';
show variables like 'innodb_file_format';
修改为如下配置:
set global innodb_large_prefix=1;
set global innodb_file_format=BARRACUDA;
建表时需要指定ROW_FORMAT为dynamic或compressed
eg:
CREATE TABLE IMPORTS
(
`ID` int(10) NOT NULL AUTO_INCREMENT COMMENT '资产ID',
PKG_ID int(10) NOT NULL COMMENT '资产ID',
CLASS_NAME varchar(255) NOT NULL COMMENT '类名',
AUTO_ADD int(1) DEFAULT 1 COMMENT '是否自动添加',
UPDATE_TIME timestamp COMMENT '最后修改时间',
CREATE_TIME timestamp COMMENT '创建时间',
CREATED_BY varchar(50) NOT NULL COMMENT '操作人员名称',
UPDATED_BY varchar(50) NOT NULL COMMENT '操作人员名称',
PRIMARY KEY (`ID`),
UNIQUE (PKG_ID, CLASS_NAME)
) ENGINE=InnoDB ROW_FORMAT=dynamic DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
————————————————
版权声明:本文为CSDN博主「Sword_Shi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jian876601394/article/details/94313071
既然MYSQL 5.7以上的版本就没有这个限制,那么在宝塔面板中更改版本5.7,重启,问题解决。
环境变量还没改为5.7,那么opencms是怎么找到5.7的。