Unable to fix database malformed with tmpfs...get "unrecognized token" error

i am trying to repair my orders.db database ans it appears to working (slowly) without tmpfs on docker, but id like to use tmpfs to speed up the process.

here is my output:

PS C:\Users\Administrator> docker run -it --rm --mount type=bind,source=c:\test\storagenode\storage,destination=/storage --mount type=tmpfs,destination=/ramdisk sstc/sqlite3 sh
/data # cp /storage/orders.db /ramdisk/orders.db
/data # sqlite3 /ramdisk/orders.db
SQLite version 3.30.1 2019-10-10 20:19:45
Enter “.help” for usage hints.
sqlite> .mode insert
sqlite> .output /ramdisk/dump_all.sql
sqlite> .dump
sqlite> .exit
/data # cat /ramdisk/dump_all.sql | grep -v TRANSACTION | grep -v ROLLBACK | grep -v COMMIT >/ramdisk/dump_all_notrans.s
/data # sqlite3 /ramdisk/orders.db “.read /ramdisk/dump_all_notrans.sql”
Error: near line 49: unrecognized token: “X’0a10e32a2c8e25a84820938a78303743d4cf1220af2c42003efc826ab4361f73f9d890942146fe0ebe806786f8e7190800000000222011e84”
/data #

any help would be greatly appreciated! thank you!

EDIT: The outputted file is 27kb from a 500mb initial orders.db file :frowning:

You should specify the size of the tmpfs binding https://docs.docker.com/storage/tmpfs/#specify-tmpfs-options
Also, since you are on Windows, you should add RAM to your docker VM to be able to fit to the RAM

Worked perfectly! Wow, what a difference tmpfs made. From 5-6 hour repair on SSD to just a few minutes using tmpfs. Thank you @Alexey!!

P.S. I can open a new thread If you would like, but is there a definitive guide for moving from docker on windows to a native windows UI install? I am seeing potential sticking points in some posts (such as a lack of correct charting/bandwidth reporting on the webui page) when people have move to a native windows install.


Which is indication of wrong path for the storage. When you migrated from the docker to the Windows GUI, you must specify the folder storage as a storage location, unlike in docker.
For example, your mount was --mount type=bind,source=d:\storagenode,destination=/app/config, then your Windows GUI storage path will be d:\storagenode\storage, not d:\storagenode.
Otherwise you will see a discrepancy in the dashboard and your node will disqualified very quick because Windows GUI will start from scratch in the d:\storagenode and you will have a two collections of folders and files - new one (empty) in the d:\storagenode and the old one (filled) in the d:\storagenode\storage.
So, be careful.