Restore the most recent working backup. 

Tomasz Lewicki schrieb am Donnerstag, 1. Januar 2026 um 16:56:42 UTC+1:

> I have the following problem. Today, at around 1:30 p.m. local time, Weewx 
> stopped working - the data sent by rsync to the website are not refreshing. 
> After restarting Weewx, I see:
>
> pi@pihole-dom:~ $ sudo systemctl status weewx.service 
> × weewx.service - WeeWX
>      Loaded: loaded (/lib/systemd/system/weewx.service; enabled; preset: 
> enabled)
>      Active: failed (Result: signal) since Thu 2026-01-01 16:14:29 CET; 
> 32min ago
>    Duration: 7min 15.568s
>        Docs: https://weewx.com/docs
>     Process: 6937 ExecStart=weewxd /etc/weewx/weewx.conf (code=killed, 
> signal=KILL)
>    Main PID: 6937 (code=killed, signal=KILL)
>         CPU: 2min 29.856s
>         
> I checked the log, where I only save messages from the ERROR level. The 
> log is about 150 MB in size, which in itself is not normal. Inside, there 
> are lots of messages:
>
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: 
> Evaluation of template /etc/weewx/skins/neowx-material/year.html.tmpl 
> failed with exception '<class>
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
> Ignoring template /etc/weewx/skins/neowx-material/year.html.tmpl
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
> Reason: database disk image is malformed
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>  Traceback (most recent call last):
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 334, in generate
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>      unicode_string = compiled_template.respond()
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "_etc_weewx_skins_neowx_material_year_html_tmpl.py", line 1130, in 
> respond
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "/usr/share/weewx/weewx/tags.py", line 508, in __getattr__
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>      vh = self._do_query()
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>           ^^^^^^^^^^^^^^^^
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "/usr/share/weewx/weewx/tags.py", line 494, in _do_query
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>      result = weewx.xtypes.get_aggregate(self.obs_type, self.timespan,
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "/usr/share/weewx/weewx/xtypes.py", line 136, in get_aggregate
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>      return xtype.get_aggregate(obs_type, timespan, aggregate_type, 
> db_manager,
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>             
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "/usr/share/weewx/weewx/xtypes.py", line 372, in get_aggregate
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>      row = db_manager.getSql(select_stmt)
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "/usr/share/weewx/weewx/manager.py", line 597, in getSql
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>      _cursor.execute(sql, sqlargs)
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "/usr/share/weewx/weedb/sqlite.py", line 38, in guarded_fn
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>      return fn(*args, **kwargs)
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>             ^^^^^^^^^^^^^^^^^^^
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>    File "/usr/share/weewx/weedb/sqlite.py", line 233, in execute
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>      return sqlite3.Cursor.execute(self, *args, **kwargs)
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> gru 31 14:50:59 pihole-dom weewxd[968]: ERROR weewx.cheetahgenerator: **** 
>  sqlite3.DatabaseError: database disk image is malformed
>
> This one worried me: 
>
> sqlite3.DatabaseError: database disk image is malformed
>
> I looked at the summary for the year and saw a single, very high peak on 
> the pressure graph with an absurd value of approx. 2e+184 for August 15. 
> All other parameters (temperature, etc.) look normal. The summary for the 
> month also looks normal. I looked at the database, but neither on that day 
> nor on any other day did the pressure values exceed the norm. So I decided 
> to rebuild the summaries. Since Weewx and the database are on Raspberry Pi, 
> I moved the weewx.sdb file to my laptop and, using the instructions from 
> https://www.weewx.com/docs/5.1/utilities/weectl-database/, I first did 
> the following:
>
> stalker@e6540:~$ weectl database drop-daily
> Using configuration file /etc/weewx/weewx.conf
> Proceeding will delete all your daily summaries from database 'weewx.sdb'
> Are you sure you want to proceed (y/n)? y
> Daily summary tables dropped from database 'weewx.sdb' in 0.06 seconds
>
> And then:
>
> stalker@e6540:~$ weectl database rebuild-daily
> Using configuration file /etc/weewx/weewx.conf
> All daily summaries will be rebuilt.
> Rebuild the daily summaries in the database 'weewx.sdb' (y/n)? y
> Rebuilding daily summaries in database 'weewx.sdb' ...
> Traceback (most recent call last):025-08-03 22:30:00 CEST (1754253000)
>   File "/usr/share/weewx/weectl.py", line 75, in <module>
>     main()
>     ~~~~^^
>   File "/usr/share/weewx/weectl.py", line 67, in main
>     namespace.func(namespace)
>     ~~~~~~~~~~~~~~^^^^^^^^^^^
>   File "/usr/share/weewx/weectllib/__init__.py", line 90, in dispatch
>     namespace.action_func(config_dict, namespace)
>     ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/share/weewx/weectllib/database_cmd.py", line 328, in 
> rebuild_daily
>     weectllib.database_actions.rebuild_daily(config_dict,
>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
>                                              date=namespace.date,
>                                              ^^^^^^^^^^^^^^^^^^^^
>     ...<3 lines>...
>                                              dry_run=namespace.dry_run,
>                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
>                                              no_confirm=namespace.yes)
>                                              ^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/share/weewx/weectllib/database_actions.py", line 139, in 
> rebuild_daily
>     nrecs, ndays = dbm.backfill_day_summary(start_d=from_d,
>                    ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
>                                             stop_d=to_d,
>                                             ^^^^^^^^^^^^
>                                             trans_days=20)
>                                             ^^^^^^^^^^^^^^
>   File "/usr/share/weewx/weewx/manager.py", line 1331, in 
> backfill_day_summary
>     for rec in self.genBatchRecords(start_batch_ts, stop_batch_ts):
>                ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/share/weewx/weewx/manager.py", line 536, in genBatchRecords
>     for row in self.genBatchRows(startstamp, stopstamp):
>                ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/share/weewx/weewx/manager.py", line 518, in genBatchRows
>     for row in gen:
>                ^^^
> sqlite3.DatabaseError: database disk image is malformed
>
> Note that in the Traceback message (most recent call last):025-08-03 
> 22:30:00 CEST (1754253000), the year is written as 025 instead of 2025, but 
> the Julian date converts correctly to 2025-08-03 20:30:00 UT. However, 
> moving along the graph in the year summary, August 3 looks normal, and the 
> peak is August 15.
>
> The question is simple: how to fix the database?
>

-- 
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].
To view this discussion visit 
https://groups.google.com/d/msgid/weewx-user/e48b945d-fea3-48ac-af02-edfdad227f69n%40googlegroups.com.

Reply via email to