求助:keystone同步数据库的时候提示error1071

disillusion0123 2016-09-08 01:51:06
环境是ubuntu 16.04,报错信息如下:
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters [-] DBAPIError exception wrapped from (pymysql.err.InternalError) (1071, u'Specified key was too long; max key length is 767 bytes') [SQL: u'\nCREATE TABLE migrate_version (\n\trepository_id VARCHAR(250) NOT NULL, \n\trepository_path TEXT, \n\tversion INTEGER, \n\tPRIMARY KEY (repository_id)\n)\n\n']
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters Traceback (most recent call last):
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters context)
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, in do_execute
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters cursor.execute(statement, parameters)
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/cursors.py", line 158, in execute
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters result = self._query(query)
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/cursors.py", line 308, in _query
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters conn.query(q)
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 820, in query
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters self._affected_rows = self._read_query_result(unbuffered=unbuffered)
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 1002, in _read_query_result
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters result.read()
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 1285, in read
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters first_packet = self.connection._read_packet()
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 966, in _read_packet
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters packet.check_error()
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 394, in check_error
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters err.raise_mysql_exception(self._data)
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/err.py", line 120, in raise_mysql_exception
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters _check_mysql_exception(errinfo)
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/pymysql/err.py", line 115, in _check_mysql_exception
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters raise InternalError(errno, errorvalue)
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters InternalError: (1071, u'Specified key was too long; max key length is 767 bytes')
2016-09-07 22:50:23.449 23462 ERROR oslo_db.sqlalchemy.exc_filters
2016-09-07 22:50:23.456 23462 CRITICAL keystone [-] DBError: (pymysql.err.InternalError) (1071, u'Specified key was too long; max key length is 767 bytes') [SQL: u'\nCREATE TABLE migrate_version (\n\trepository_id VARCHAR(250) NOT NULL, \n\trepository_path TEXT, \n\tversion INTEGER, \n\tPRIMARY KEY (repository_id)\n)\n\n']
......以下部分省略,报错信息都是这个


查询了相关资料得知问题出自索引长度
于是做了如下修改:
#cd /etc/mysql/mariadb.conf.d
修改下面每个文件中的字符集为utf8mb4 -> utf8,然后重启mysql,登陆mysql查询数据库默认字符集:
MariaDB [(none)]> show variables like "%char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

然后同步keystone,报错依旧,不知道为什么。。求大神指点
...全文
4625 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
alinly 2017-09-27
  • 打赏
  • 举报
回复
2种方式:

1: 所有数据库删除重新初始化,字符编码为utf8

2: 把所有数据以及标结构导出,把编码替换为utf8,然后导入.

qq_30239859 2017-07-19
  • 打赏
  • 举报
回复
可以的,qq 892697603
zhlzhanglin 2017-05-18
  • 打赏
  • 举报
回复
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mariadb.conf.d/50-server.cnf
Canye508 2017-01-01
  • 打赏
  • 举报
回复
引用 2 楼 qq_30239859 的回复:
楼主你好!将keystone数据库删掉,重新创建即可。我在最近也遇到这个问题,在别人的指点之下完美解决!
感谢大神,这招管用。能否加个微信,一起学习Openstack.
qq_30239859 2016-12-20
  • 打赏
  • 举报
回复
楼主你好!将keystone数据库删掉,重新创建即可。我在最近也遇到这个问题,在别人的指点之下完美解决!
u012336939 2016-09-16
  • 打赏
  • 举报
回复
openstack新手,也遇到这个问题了,不知道题主解决没有,求助

998

社区成员

发帖
与我相关
我的任务
社区描述
OpenStack
社区管理员
  • OpenStack社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧