Mercurial > kallithea
changeset 8594:3c503044e9f1
mysql: bump sqlalchemy.url MariaDB/MySQL charset to to 'utf8mb4' to get full UTF-8 support
The change in 210e76d69b62 only changed character_set_database, as shown by output after:
--- a/kallithea/model/base.py
+++ b/kallithea/model/base.py
@@ -46,3 +46,8 @@ def init_model(engine):
engine_str = obfuscate_url_pw(str(engine.url))
log.info("initializing db for %s", engine_str)
meta.Base.metadata.bind = engine
+
+ meta.Session.configure(bind=engine)
+ for a, b in meta.Session().execute('''show variables''').fetchall():
+ if 'character_set_' in a:
+ print(a, repr(b))
Before, with charset=utf8, the utf8mb3 charset was used all the way through the stack:
[kallithea.model.base] initializing db for mysql://kallithea-test:XXXXX@localhost/kallithea-test?charset=utf8
character_set_client 'utf8'
character_set_connection 'utf8'
character_set_database 'utf8mb4'
character_set_filesystem 'binary'
character_set_results 'utf8'
character_set_server 'latin1'
character_set_system 'utf8'
With explicit charset=utf8mb4:
[kallithea.model.base] initializing db for mysql://kallithea-test:XXXXX@localhost/kallithea-test?charset=utf8mb4
character_set_client 'utf8mb4'
character_set_connection 'utf8mb4'
character_set_database 'utf8mb4'
character_set_filesystem 'binary'
character_set_results 'utf8mb4'
character_set_server 'latin1'
character_set_system 'utf8'
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Wed, 01 Jul 2020 14:58:56 +0200 |
parents | 922808a61274 |
children | 39db02a954ec |
files | development.ini docs/contributing.rst kallithea/lib/paster_commands/template.ini.mako |
diffstat | 3 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/development.ini Thu Jun 25 01:29:02 2020 +0200 +++ b/development.ini Wed Jul 01 14:58:56 2020 +0200 @@ -361,7 +361,7 @@ sqlalchemy.url = sqlite:///%(here)s/kallithea.db?timeout=60 #sqlalchemy.url = postgresql://kallithea:password@localhost/kallithea -#sqlalchemy.url = mysql://kallithea:password@localhost/kallithea?charset=utf8 +#sqlalchemy.url = mysql://kallithea:password@localhost/kallithea?charset=utf8mb4 ## Note: the mysql:// prefix should also be used for MariaDB sqlalchemy.pool_recycle = 3600
--- a/docs/contributing.rst Thu Jun 25 01:29:02 2020 +0200 +++ b/docs/contributing.rst Wed Jul 01 14:58:56 2020 +0200 @@ -101,7 +101,7 @@ Tests can be run on MariaDB/MySQL like:: echo "GRANT ALL PRIVILEGES ON \`kallithea-test\`.* TO 'kallithea-test'@'localhost' IDENTIFIED BY 'password'" | sudo -u mysql mysql - TEST_DB='mysql://kallithea-test:password@localhost/kallithea-test?charset=utf8' py.test + TEST_DB='mysql://kallithea-test:password@localhost/kallithea-test?charset=utf8mb4' py.test You can also use ``tox`` to run the tests with all supported Python versions.
--- a/kallithea/lib/paster_commands/template.ini.mako Thu Jun 25 01:29:02 2020 +0200 +++ b/kallithea/lib/paster_commands/template.ini.mako Wed Jul 01 14:58:56 2020 +0200 @@ -463,9 +463,9 @@ #sqlalchemy.url = postgresql://kallithea:password@localhost/kallithea %endif %if database_engine == 'mysql': -sqlalchemy.url = mysql://kallithea:password@localhost/kallithea?charset=utf8 +sqlalchemy.url = mysql://kallithea:password@localhost/kallithea?charset=utf8mb4 %else: -#sqlalchemy.url = mysql://kallithea:password@localhost/kallithea?charset=utf8 +#sqlalchemy.url = mysql://kallithea:password@localhost/kallithea?charset=utf8mb4 %endif <%text>##</%text> Note: the mysql:// prefix should also be used for MariaDB