Closed camillemonchicourt closed 5 years ago
En effet dans le fichier /var/log/geopaysages/geopaysages.err.log
, j'ai pas mal d'erreurs liés à l'encodage ascii :
...
Traceback (most recent call last):
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/geopaysages/geopaysages/backend/api.py", line 104, in returnAllThemes
return jsonify(error=exception), 400
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/json/__init__.py", line 321, in jsonify
dumps(data, indent=indent, separators=separators) + '\n',
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/json/__init__.py", line 179, in dumps
rv = _json.dumps(obj, **kwargs)
File "/usr/lib/python3.5/json/__init__.py", line 237, in dumps
**kw).encode(obj)
File "/usr/lib/python3.5/json/encoder.py", line 198, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.5/json/encoder.py", line 256, in iterencode
return _iterencode(o, 0)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/json/__init__.py", line 81, in default
return _json.JSONEncoder.default(self, o)
File "/usr/lib/python3.5/json/encoder.py", line 179, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: UnicodeDecodeError('ascii', b'Am\xc3\xa9nagements - Travaux - Infrastructures', 2, 3, 'ordinal not in range(128)') is not JSON serializable
[2019-05-16 14:24:48,833] ERROR in app: Exception on /api/subThemes [GET]
Traceback (most recent call last):
File "/home/geopaysages/geopaysages/backend/api.py", line 110, in returnAllSubthemes
get_all_subthemes = models.DicoStheme.query.all()
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/orm/query.py", line 2703, in all
return list(self)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/orm/loading.py", line 90, in instances
util.raise_from_cause(err)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 187, in reraise
raise value
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/orm/loading.py", line 71, in instances
fetch = cursor.fetchall()
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/engine/result.py", line 1125, in fetchall
self.cursor, self.context)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1405, in _handle_dbapi_exception
util.reraise(*exc_info)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 187, in reraise
raise value
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/engine/result.py", line 1119, in fetchall
l = self.process_rows(self._fetchall_impl())
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/sqlalchemy/engine/result.py", line 1070, in _fetchall_impl
return self.cursor.fetchall()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/geopaysages/geopaysages/backend/api.py", line 120, in returnAllSubthemes
return jsonify(error=exception), 400
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/json/__init__.py", line 321, in jsonify
dumps(data, indent=indent, separators=separators) + '\n',
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/json/__init__.py", line 179, in dumps
rv = _json.dumps(obj, **kwargs)
File "/usr/lib/python3.5/json/__init__.py", line 237, in dumps
**kw).encode(obj)
File "/usr/lib/python3.5/json/encoder.py", line 198, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.5/json/encoder.py", line 256, in iterencode
return _iterencode(o, 0)
File "/home/geopaysages/geopaysages/venv/lib/python3.5/site-packages/flask/json/__init__.py", line 81, in default
return _json.JSONEncoder.default(self, o)
File "/usr/lib/python3.5/json/encoder.py", line 179, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: UnicodeDecodeError('ascii', b'Am\xc3\xa9nagement des domaines skiables', 2, 3, 'ordinal not in range(128)') is not JSON serializable
Bon OK, mon serveur n'avait pas de locales définies.... Je vais refaire l'installation en le définissant bien en UTF-F8...
dpkg-reconfigure locales
C'était bien un problème de locales non configurées sur mon serveur.
Je viens d'installer GeoPaysages 1.0.0-rc.3.7 sur un serveur Debian 9.9.
Quand j'essaie d'ouvrir la BDD avec pgadmin j'ai ce message :
Codage de la base de données
_La base de données geopaysages a été créé pour stocker des données dans le codage SQLASCII. Ce codage est seulement défini pour les caractères sur sept bits ; la signification des caractères dont le huitième bit est positionné (caractères non ASCII allant de 127 à 255) n'est pas définie. En conséquence, il n'est pas possible pour le serveur de convertir les données vers d'autres codages.
_Si vous stockez des données non ASCII dans la base, vous êtes fortement encouragé à utiliser un bon codage représentant la locale de votre ensemble de caractères pour retrouver le bénéfice des conversions automatiques vers les différents codages client si nécessaire. Si vous stockez des données non ASCII dans une base de données SQLASCII, vous pouvez rencontrer des problèmes avec des caractères étranges écrit ou lu depuis la base de données, problèmes causés par des soucis de conversion de code. Ceci pourrait vous amener beaucoup de problèmes en accédant à la base de données avec des programmes clients et des pilotes différents.
Pour la grande majorité des installations, le codage Unicode (UTF8) apportera la plus grande flexibilité.
Je ne sais pas si c'est normal et souhaitable. Et j'ai l'impression que cela occasionne d'autres problèmes.