Skip to main content

手工修复数据

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 TeslaMate database
  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;