数据库初始化失败问题解决分享

在安装Rainbond的时候, 总是出现 ./entrypoint.sh if [ “$1” = “debug” -o “$1” = “bash” ];then执行报错, 一度怀疑shell脚本出了问题。

报错如下:

刚刚使用Rainbond,自己也有点闷,不知如何下手,在Rainbond官方工程师的操作帮助下,渐渐熟悉了Rainbond的内部结构。

发现原来是初始化数据库时候, django.db.utils.OperationalError: (1071, ‘Specified key was too long; max key length is 767 bytes’),
Rainbond使用了 超过阿里云RDS默认大小的索引, 解决办法是把阿里云rds超长索引打开

最后提一点建议:

if [ "$ui_num" == 1 ]; then
            status=$(docker exec rbd-app-ui ./entrypoint.sh init  >/dev/null 2>&1 && echo 0 || echo 1 )
            [ "$status" -eq 0 ] && break || (
                echo "migrate ui try $i" >> /tmp/migrate.ui.log
                docker exec rbd-app-ui python ./entrypoint.sh init >> /tmp/migrate.ui.log
                ((fail_num+=1))
            )
        else

官方这段脚本, 写的有点不明白什么意思, 执行数据库初始化失败后, 还用python 在执行一遍,会让人误以为初始化脚本出的问题, 希望可以优化

感谢分享,在下个版本此问题将会有相关优化