Skip to main content

Manually fixing data

note

If you are using docker-compose, you are using Docker Compose v1, which has been deprecated. Docker Compose commands refer to Docker Compose v2. Consider upgrading your docker setup, see Migrate to Compose V2

Get the ID

First you need to find out the ID of the drive or charge:

  • Open the Drives dashboard and click on the start date of the drive.
  • The URL will contain the drive ID, for example &var-drive_id=9999.

Terminate a drive or charge

If for some reason a drive or charge hasn't been fully recorded, for example due to a bug or an unexpected restart, you can terminate it manually. Among other things, this assigns an end date to the drive/charge.

Replace 9999 with the actual ID then run the command while the TeslaMate container is running:

docker compose exec teslamate bin/teslamate rpc \
"TeslaMate.Repo.get!(TeslaMate.Log.Drive, 9999) |> TeslaMate.Log.close_drive()"

Delete a drive or charge

If for some reason a drive or charge was recorded incorrectly, you can delete it.

  1. Attach to the running database container:

    docker compose exec database psql teslamate teslamate
    note

    If you get the error No such service: database, update your docker-compose.yml or use db instead of database in the above command.

  2. Afterwards replace 9999 with the actual ID then run the query:

    DELETE FROM drives WHERE id = 9999;

Remove a vehicle from the database

NOTE: Always backup your data before performing any database changes.

  1. Connect to your running TeslaMate database

    docker compose exec database psql teslamate teslamate
    note

    If you get the error No such service: database, update your docker-compose.yml or use db instead of database in the above command.

  2. Identify the right car ID in the database to remove

SELECT id, vin FROM cars;
  1. Based upon the output, run the following command replacing num with the ID from the previous command.
DELETE FROM cars WHERE id = num;
DELETE FROM car_settings WHERE id = num;
DELETE FROM charging_processes WHERE car_id = num;
DELETE from charges WHERE charging_process_id in (select id from charging_processes where car_id = num);
DELETE FROM drives WHERE car_id = num;
DELETE FROM positions WHERE car_id = num;
DELETE FROM states WHERE car_id = num;
DELETE FROM updates WHERE car_id = num;