Hi, I had trouble installing weewx using MySQL on OpenSuse: following the directions in the installation pages of de weewx documentation did not help. OpenSuse does not provide the MySQL libraries for Python that other distributions seem to deliver. After installation journalctl shows the following error:
Mar 17 10:48:30 server systemd[1]: Started weewx. Mar 17 10:48:30 server [RPM][28003]: install weewx-3.9.1-2.suse.noarch: success Mar 17 10:48:30 server [RPM][28003]: erase weewx-3.9.0-1.suse.noarch: success Mar 17 10:48:30 server [RPM][28003]: install weewx-3.9.1-2.suse.noarch: success Mar 17 10:48:30 server [RPM][28003]: Transaction ID 5c8e17ed finished: 0 Mar 17 10:48:30 server weewx[28017]: engine: Initializing weewx version 3.9.1 Mar 17 10:48:30 server weewx[28017]: engine: Using Python 2.7.14 (default, Oct 12 2017, 15:50:02) [GCC] Mar 17 10:48:30 server weewx[28017]: engine: Platform Linux-4.12.14-lp150.12.48-default-x86_64-with-SuSE-15.0-x86_64 Mar 17 10:48:30 server weewx[28017]: engine: Locale is 'en_US.UTF-8' Mar 17 10:48:30 server weewx[28017]: engine: pid file is /var/run/weewx.pid Mar 17 10:48:30 server weewx[28044]: engine: Using configuration file /etc/weewx/weewx.conf Mar 17 10:48:30 server weewx[28044]: engine: Loading station type SocketLogger (user.socketlogger) Mar 17 10:48:30 server weewx[28044]: SocketLogger: Connecting to socket on localhost port 2999 Mar 17 10:48:30 server systemd[1]: weewx.service: Supervising process 28044 which is not our child. We'll most likely > Mar 17 10:48:30 server weewx[28044]: engine: StdConvert target unit is 0x10 Mar 17 10:48:30 server weewx[28044]: wxcalculate: The following values will be calculated: barometer=prefer_hardware, > Mar 17 10:48:30 server weewx[28044]: wxcalculate: The following algorithms will be used for calculations: altimeter=aa> Mar 17 10:48:30 server weewx[28044]: engine: Archive will use data binding wx_binding Mar 17 10:48:30 server weewx[28044]: engine: Record generation will be attempted in 'software' Mar 17 10:48:30 server weewx[28044]: engine: Using archive interval of 600 seconds (software record generation) Mar 17 10:48:30 server weewx[28044]: engine: Caught unrecoverable exception in engine: Mar 17 10:48:30 server weewx[28044]: **** No module named MySQLdb Mar 17 10:48:30 server weewx[28044]: **** Traceback (most recent call last): Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weewx/engine.py", line 884, in main Mar 17 10:48:30 server weewx[28044]: **** engine = engine_class(config_dict) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weewx/engine.py", line 78, in __init__ Mar 17 10:48:30 server weewx[28044]: **** self.loadServices(config_dict) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weewx/engine.py", line 142, in loadServices Mar 17 10:48:30 server weewx[28044]: **** self.service_obj.append(weeutil.weeutil._get_object(svc)(self, config_dict)) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weewx/engine.py", line 500, in __init__ Mar 17 10:48:30 server weewx[28044]: **** self.setup_database(config_dict) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weewx/engine.py", line 608, in setup_database Mar 17 10:48:30 server weewx[28044]: **** dbmanager = self.engine.db_binder.get_manager(self.data_binding, initialize=True) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weewx/manager.py", line 872, in get_manager Mar 17 10:48:30 server weewx[28044]: **** self.manager_cache[data_binding] = open_manager(manager_dict, initialize) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weewx/manager.py", line 1021, in open_manager Mar 17 10:48:30 server weewx[28044]: **** manager_dict['schema']) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weewx/manager.py", line 128, in open_with_create Mar 17 10:48:30 server weewx[28044]: **** connection = weedb.connect(database_dict) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weedb/__init__.py", line 86, in connect Mar 17 10:48:30 server weewx[28044]: **** __import__(db_dict['driver']) Mar 17 10:48:30 server weewx[28044]: **** File "/usr/share/weewx/weedb/mysql.py", line 10, in <module> Mar 17 10:48:30 server weewx[28044]: **** import MySQLdb Mar 17 10:48:30 server weewx[28044]: **** ImportError: No module named MySQLdb Mar 17 10:48:30 server weewx[28044]: **** Exiting. Mar 17 10:48:30 server systemd[1]: weewx.service: Main process exited, code=exited, status=1/FAILURE Mar 17 10:48:30 server systemd[1]: weewx.service: Unit entered failed state. Mar 17 10:48:30 server systemd[1]: weewx.service: Failed with result 'exit-code'. I have managed to get weewx working on OpenSuse by installing the module Python2-PyMySQL and changing the file /usr/share/weewx/weedb/mysql.py. The changes are very limited: diff mysql.py mysql.py-orig 10,15c10,11 < #DK < #import MySQLdb < #from _mysql_exceptions import DatabaseError, IntegrityError, ProgrammingError, OperationalError < import pymysql as MySQLdb < from pymysql import DatabaseError, IntegrityError, ProgrammingError, OperationalError < #DK end --- > import MySQLdb > from _mysql_exceptions import DatabaseError, IntegrityError, ProgrammingError, OperationalError 124,128d119 < < #DK, hardcoded socket < # connection = MySQLdb.connect(host=host, port=int(port), user=user, passwd=password, < # db=database_name, **kwargs) < # weedb.Connection.__init__(self, connection, database_name, 'mysql') 130c121,122 < db=database_name, unix_socket='/var/run/mysql/mysql.sock', **kwargs) --- > db=database_name, **kwargs) > 303,304c295 < #DK if connect._server_version >= (5, 5): < if connect.server_version >= (5, 5): --- > if connect._server_version >= (5, 5): This fix has worked for weewx from V3.7 until the current version (V3.9.1) without change. Perhaps there could be some permanent fix in the weewx kit? Regards, dkorevaar -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
