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();

最新文章

  1. Android基础(13)——对话框 的使用
  2. js 阻止冒泡 兼容性方法
  3. MySQL与Oracle 差异比较之四条件循环语句
  4. C# Multilanguage messagebox z
  5. 学习笔记之APACHE ANT
  6. 【高性能服务器】Tomcat剖析
  7. UVAlive3523 Knights of the Round Table(bcc)
  8. CF 552C 进制转换
  9. html的map自适应
  10. 认识Modbus协议
  11. 微信公众号手机无法直接下载APK文件是怎么回事
  12. fiddler中断request,修改参数问题
  13. flask 中orm关系映射 sqlalchemy的查询
  14. hdu 6069 Counting Divisors(求因子的个数)
  15. 笔记:Activity的启动过程
  16. nRF52832-PPI部分学习
  17. day02_雷神_字符串、列表、字典
  18. 给一个由n-1个整数组成的未排序的序列,其元素都是1~n中的不同的整数。如何在线性时间复杂度内寻找序列中缺失的整数
  19. MyEclipse CI 2018.9.0正式发布(附下载)
  20. 20155313 2016-2017-2 《Java程序设计》第九周学习总结

热门文章

  1. Hadoop1.x与Hadoop2.x之间的差异
  2. [LeetCode] 198. 打家劫舍 ☆(动态规划)
  3. linux tomcat 启动后控制台未显示启动日志
  4. restframework框架写api中的个人理解以及碰到的问题
  5. 前端JS
  6. Linux crontab命令参数和时间格式说明
  7. Linux命令——mount、umount
  8. Pthon魔术方法(Magic Methods)-描述器
  9. tomcat下载地址
  10. MySQL数据的优化方案