Thank you for this report. This is very useful information. I apologise for the late reply–I am just coming off a light E3 week where I did not keep up with my messages well.
I believe the 'resource temporarily unavailable' error may be due to that client being unable to show that 'can't repair this db' error in certain situations. I will make sure to fix how that popup displays.
As for the local_hashes issue, I am not sure what has happened here. My best guess is you maybe updated from pre-v262 and that update applied badly? Or did you update from just, say, v306?
If this table disappeared in just a simple, fairly recent update, you may have had a hard drive fault, and you probably want to check out the 'help my db is broke.txt' file in your install_dir/db folder as background reading. Losing local_hashes isn't the end of the world, but if your hard drive is three months away from dying, you want to check and sort that out now.
If this is a big update that went bad, there is less to worry about. My code maybe messed up due to bitrot, so we'll just have to fix it retroactively.
In either case, to get your client booting again, we'll need to create that table manually. Make sure your client is all shut down and then go to your install_dir/db directory. Run the sqlite3 executable, which will bring up a sqlite shell prompt, and then paste this in (you should be able to do it line by line):
WARNING EDIT I JUST THOUGHT OF: Do this first, please:
.open client.db
SELECT name FROM sqlite_master WHERE type="table" AND name="local_hashes";
(does it give you 'local_hashes' result or no result at all after this line?)
.exit
If you still have a local_hashes in your main db, then we can just move it. This preferable to the following solution, so let me know and I'll write you a different fix. Otherwise, open a new sqlite prompt and:
.open client.master.db
CREATE TABLE local_hashes ( hash_id INTEGER PRIMARY KEY, md5 BLOB_BYTES, sha1 BLOB_BYTES, sha512 BLOB_BYTES );
CREATE INDEX IF NOT EXISTS local_hashes_md5_index ON local_hashes (md5);
CREATE INDEX IF NOT EXISTS local_hashes_sha1_index ON local_hashes (sha1);
CREATE INDEX IF NOT EXISTS local_hashes_sha512_index ON local_hashes (sha512);
.exit
Let me know if that doesn't work–I wrote it semi by-hand, and I may have got something slightly wrong.
And try booting your client again. Unfortunately, that table will then be empty, so you won't be able to copy these hash types to clipboard, and some downloader/booru md5 checking will not work. I will make a maintenance job to repopulate this table in the coming weeks that you can fire that will regenerate all this info (be warned, this will ultimately be a big job).