"sqlite3.OperationalError: database is locked" after short runtime on Raspberry Pi 3
I tested psacc successfully some weeks ago on my Laptop and finally installed it on a Raspi 3 B.
Since it's installed on the Raspi, I didn't manage to get recording trips etc. working reliably. After some runtime, it stops writing to the database, printing this error:
2024-03-08 20:16:52,012 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/root/psa_car_controller/lib/python3.11/site-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/root/psa_car_controller/lib/python3.11/site-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/root/psa_car_controller/lib/python3.11/site-packages/psa_car_controller/psacc/application/psa_client.py", line 197, in record_info
Database.record_position(self.weather_api, car.vin, mileage, latitude, longitude, altitude, date, level,
File "/root/psa_car_controller/lib/python3.11/site-packages/psa_car_controller/psacc/repository/db.py", line 269, in record_position
conn.execute("INSERT INTO position(Timestamp,VIN,longitude,latitude,altitude,mileage,level,level_fuel,"
sqlite3.OperationalError: database is locked
I tried re-creating the database again and again and it always works for a few minutes or hours and then ends up in this state again. I've no clue where and how to start debugging this, any hint greatly appreciated. :-)
Config file kept detault settings
Environment (please complete the following information):
- OS: Raspbian 12/Bookworm.
- Brand and model of car: Opel Astra L PHEV
- Application version: 3.4.1
Same Here with 3.5.3
Same here with 3.5.6
Yep same here with 3.5.6. If i delete the database, within a few minutes i'll get the locked error again, and nothing displays in home assistant.
Thank you so much for a great container @flobz :-) I am using version 3.5.6 as a container in Docker and pull data from cache every 5 mintes. I get the below "database is locked" messages a lot. Would highly appreciate if you are able to address this in a new version :-)
2025-04-29 16:28:59,165 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:30:00,243 :: INFO :: 172.23.0.1 - - [29/Apr/2025 16:30:00] "GET /get_vehicleinfo/MYVIN?from_cache=1 HTTP/1.1" 200 -
2025-04-29 16:30:59,168 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:32:59,181 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:35:00,202 :: INFO :: 172.23.0.1 - - [29/Apr/2025 16:35:00] "GET /get_vehicleinfo/MYVIN?from_cache=1 HTTP/1.1" 200 -
2025-04-29 16:36:59,417 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:38:59,236 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:40:00,199 :: INFO :: 172.23.0.1 - - [29/Apr/2025 16:40:00] "GET /get_vehicleinfo/MYVIN?from_cache=1 HTTP/1.1" 200 -
2025-04-29 16:40:30,099 :: INFO :: <Request 'http://192.168.1.2:5050/charge_control?vin=MYVIN' [GET]>
2025-04-29 16:40:30,101 :: INFO :: 172.23.0.1 - - [29/Apr/2025 16:40:30] "GET /charge_control?vin=MYVIN HTTP/1.1" 200 -
2025-04-29 16:40:59,194 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:44:59,263 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:45:00,362 :: INFO :: 172.23.0.1 - - [29/Apr/2025 16:45:00] "GET /get_vehicleinfo/MYVIN?from_cache=1 HTTP/1.1" 200 -
2025-04-29 16:46:59,752 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:49:00,999 :: ERROR :: refresh_vehicle_info:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in __refresh_vehicle_info
self.get_vehicle_info(car.vin)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info
self.record_info(car)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info
Database.record_battery_soh(car.vin, charge_date, soh)
File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 285, in record_battery_soh
conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level))
sqlite3.OperationalError: database is locked
2025-04-29 16:49:03,510 :: INFO :: save config change
2025-04-29 16:50:00,202 :: INFO :: 172.23.0.1 - - [29/Apr/2025 16:50:00] "GET /get_vehicleinfo/MYVIN?from_cache=1 HTTP/1.1" 200 -
Same here, since change to version 3.5.6 in HACS Implementation. Support would be very helpful... :(
From few weeks I've same problem on my instance
Upgrading to 3.5.7 fixed the issue for me https://github.com/flobz/psa_car_controller/releases/tag/v3.5.7
Hi I also updated to 3.5.7, but have still the same error...
Try to redo OTP config
Still also getting this error and i've updated to 3.5.7. I've tried to re-do the OTP config, but the database error still occurs. @flobz
2025-08-28 10:44:22,440 :: ERROR :: Exception on /get_vehicleinfo/VXXXXXX [GET] Traceback (most recent call last): File "/usr/lib/python3/dist-packages/flask/app.py", line 2525, in wsgi_app response = self.full_dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/flask/app.py", line 1822, in full_dispatch_request rv = self.handle_user_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/flask/app.py", line 1820, in full_dispatch_request rv = self.dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/flask/app.py", line 1796, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/web/view/api.py", line 48, in get_vehicle_info response=json.dumps(APP.myp.get_vehicle_info(vin, from_cache).to_dict(), default=str), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info self.record_info(car) File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info Database.record_battery_soh(car.vin, charge_date, soh) File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 286, in record_battery_soh conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level)) sqlite3.OperationalError: database is locked
Also for me ... also after recreate the token
Same Problem after refreshing of th OTP: _2025-08-28 13:21:57,037 :: ERROR :: refresh_vehicle_info: Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 128, in _refresh_vehicle_info self.get_vehicle_info(car.vin) File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 111, in get_vehicle_info self.record_info(car) File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 216, in record_info Database.record_battery_soh(car.vin, charge_date, soh) File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psacc/repository/db.py", line 286, in record_battery_soh conn.execute("INSERT INTO battery_soh(date, VIN, level) VALUES(?,?,?)", (date, vin, level)) sqlite3.OperationalError: database is locked`
I retried, OTP was successful but I had the following Log: _2025-08-28 13:24:02,273 :: ERROR :: Can't refresh remote token, please redo otp procedure Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/psa/RemoteClient.py", line 157, in refresh_remote_token self.manager.refresh_token_now() File "/usr/local/lib/python3.11/dist-packages/psa_car_controller/common/utils.py", line 23, in wrapper raise RateLimitException psa_car_controller.common.utils.RateLimitException 2025-08-28 13:24:02,274 :: ERROR :: Can't configure MQTT Client
I have the same problem with version v3.5.7 Has anyone found a solution yet?
Same problem here! After container-restart whole gui is empty. (trips, ...)
I've noted that when you get subscription errors ( to PSA services ), connection refused, or Ratelimit Exceptions in PSA CC logs, to get this fixed:
- redo OTP procedure
- just after, disable the plugin (or exit the docker) during an hour
- meanwhile, if possible, get a new Public IP address
- if you have a script along with the plugin, adjust the polling each 10 minutes (and not less)
and check if errors, including the locked database ones, still occur.