求助:keystone同步数据库的时候提示error1071
环境是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,报错依旧,不知道为什么。。求大神指点