Have you deleted the object_database and oct5 directories as Spectral did?
Historically all that I have done is issue --resync-blockchain and the witness connects to the seed(s) to rebuild the chain. Upon witeness startup the console logs:
483498ms th_a witness.cpp:111 plugin_initialize ] witness plugin: plugin_initialize() end
483500ms th_a db_management.cpp:98 wipe ] Wiping database
483513ms th_a object_database.cpp:81 wipe ] Wiping object_database.
484226ms th_a application.cpp:242 operator() ] Initializing database...
However, "Wiping object_database" does not seem to be occurring as expected, as the witness was unable to get blocks beyond 45158.
I did take the advise to manually remove both the object_database and data_dir directories from the witness, leaving only the genesis.json file. This of course forces the node to start from a clean state. This resulted in a proper sync to the main chain.
This seems like a bug to me, but will defer to development to review if that is as designed functionality. If so, please advise what the best practice is to force the witness to start from a clean state using command line options, as I'd rather not script from shell.
Best,
Fox