解决用官方容器启动redmine无法插入中文字符的问题
2024-08-30 20:05:24
jiangzhaowei@kitking:/kitking/redmineIot$ sudo docker-compose up -d
Creating network "redmineiot_default" with the default driver
Creating redmineiot_mysql_1 ...
Creating redmineiot_web_1 ...
Creating redmineiot_mysql_1
Creating redmineiot_web_1 ... done
docker exec -it redmineiot_web_1 /bin/bash
root@5737a31e5531:/usr/src/redmine# cd /home/git
root@5737a31e5531:/home/git# chown git:git repositories/
root@5737a31e5531:/home/git# su git
git@5737a31e5531:~$ gitolite setup -pk ../redmine/.ssh/id_rsa.pub
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: keydir/id_rsa.pub duplicates keydir/admin.pub, sshd will ignore it
之前采用docker-compose顺利搭建了redmine,但是在使用时发现无法插入中文字符,始终报internal server error错误,后来看日志,显示插入异常,现在终于明白为啥很多人安装不适用官方镜像了,问题出现了,总得解决吧,进一步分析原因是由于数据库的字符集是latin1,终于明白问题所在,然后去看了下官方给的脚本,默认是使用的utf8编码,所有的数据库表创建都是未指定字符集的,因此采用数据库脚本来变更,要想把所有的数据表的字符集改变为utf-8,手动的方式是不可取的,可能误操作数据库,因此采用存储过程来实现,下面给出存储过程脚本。
jiangzhaowei@kitking:/kitking/redmineIot$ docker exec -it redmineiot_mysql_1 /bin/bash
root@c5588a506b78:/# mysql -uredmine -py0ur_passw0rd
DELIMITER $$
CREATE PROCEDURE `redmine`.`update_char_set`()
BEGIN
DECLARE done INT DEFAULT ;
DECLARE t_sql VARCHAR();
DECLARE tableName VARCHAR();
DECLARE lists CURSOR FOR SELECT table_name FROM `information_schema`.`TABLES` WHERE table_schema = 'redmine';
DECLARE CONTINUE HANDLER FOR SQLSTATE '' SET done = ;
OPEN lists;
FETCH lists INTO tableName;
REPEAT
SET @t_sql = CONCAT('ALTER TABLE ', tableName, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci');
PREPARE stmt FROM @t_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
FETCH lists INTO tableName;
UNTIL done END REPEAT;
CLOSE lists;
END$$
DELIMITER ;
将存储过程在数据库所在的服务器上执行一遍,
然后是改变数据库的字符集和字符集合,再更新每个数据表的,执行脚本如下:
ALTER DATABASE redmine DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CALL redmine.update_char_set();
最新文章
- Android基础(13)——对话框 的使用
- js 阻止冒泡 兼容性方法
- MySQL与Oracle 差异比较之四条件循环语句
- C# Multilanguage messagebox z
- 学习笔记之APACHE ANT
- 【高性能服务器】Tomcat剖析
- UVAlive3523 Knights of the Round Table(bcc)
- CF 552C 进制转换
- html的map自适应
- 认识Modbus协议
- 微信公众号手机无法直接下载APK文件是怎么回事
- fiddler中断request,修改参数问题
- flask 中orm关系映射 sqlalchemy的查询
- hdu 6069 Counting Divisors(求因子的个数)
- 笔记:Activity的启动过程
- nRF52832-PPI部分学习
- day02_雷神_字符串、列表、字典
- 给一个由n-1个整数组成的未排序的序列,其元素都是1~n中的不同的整数。如何在线性时间复杂度内寻找序列中缺失的整数
- MyEclipse CI 2018.9.0正式发布(附下载)
- 20155313 2016-2017-2 《Java程序设计》第九周学习总结