Table of Contents
How to Upgrade the Chia db
Upgrading the Chia db from v1 to v2 CAN be a very simple process. However, the reason you are reading this guide is most probably because you want to learn how to upgrade AFTER your drive is full and you don't want to sync from scratch.
We will go through three different ways:
- Upgrading the easy way
- Download v2 from a trusted source and replace v1
- Using an external SSD
- Using the SpaceFarmer Community Node
1. Updating the easy way
- in CLI change directory to chia
cd c:\Users\%USERNAME%\AppData\Local\chia-blockchain\a*\resources\app.asar.unpacked\daemon\
- run
chia db upgrade
in CLI. - Update your config.yaml under the
full_node:
section fromdatabase_path: db/blockchain_v1_CHALLENGE.sqlite
todatabase_path: db/blockchain_v2_CHALLENGE.sqlite
.
There are two prerequisites for upgrading the Chia db the easy way.
- enough space on the target directory
- enough space on your temporary directory (often overlooked)
For further reference, see https://github.com/Chia-Network/chia-blockchain/wiki/FAQ#what-is-the-new-database.
2. Download and replace
The advantage of this method is that it is easy and has minimal downtime. The trick is to download the db right after the snapshot, so your node needs to do minimal syncing to catch up with the latest blockheight. The downside is that you need to trust the source from which you download the snapshot.
- Stop all chia processes
- go to
C:\Users\%USERNAME%\.chia\mainnet\db
and deleteblockchain_v1_mainnet.sqlite
- download the v2 db from a source you trust and place it in the folder. Spacefarmers offers a daily snapshot here
- in your your config.yaml, replace under the
full_node:
section fromdatabase_path: db/blockchain_v1_CHALLENGE.sqlite
todatabase_path: db/blockchain_v2_CHALLENGE.sqlite
3. Using an external SSD
- stop all chia processes
chia stop all
- Make sure your TMP folder has enough space available (size of v1+v2). If not, see the fix under “Error when TMP folder full”.
- in CLI change directory to chia
cd c:\Users\%USERNAME%\AppData\Local\chia-blockchain\a*\resources\app.asar.unpacked\daemon\
chia db upgrade
- in your your config.yaml, replace under the
full_node:
section fromdatabase_path: db/blockchain_v1_CHALLENGE.sqlite
todatabase_path: db/blockchain_v2_CHALLENGE.sqlite
- when done,
chia start farmer -r
and wait for it to sync
3.1 Error when TMP folder full
The method above doesn't work if your TMP folder (which is C:\Users\%USERPROFILE%\Appdata\Local\Temp
by default on Windows) is on the full drive.
You will attempt to do so, you get a pop-up with the following window somewhere in the process:
Chia.exe - Delayed Write Failed Windows was unable to save all the data for the file \chiaDB\blockchain_v2_mainnet.sqlite: the data has been lost. This error may be caused if the device has been removed or the media is write-protected.
And in the CLI you will find the following:
Conversion failed with error: disk I/O error. The target v2 database is left in place (possibily in an incomplete state) D:\<PathforDB>\blockchain_v2_mainnet.sqlite If your failure was caused by a full disk, ensure the volumes of your temporary- and target directory have sufficient free space. Your temporary directory may be ''C:\Users\%USERNAME%\Appdata\Local\Temp'' you can specify the "TMP" environment variable to control the temporary directory to be used.
The work-around for this is to change your temporary folder to the new SSD (temporarily), by configuring your accounts Environmental Variables.
- Go to Settings and search: edit environmental variables for your account
- Edit the TMP field and change from
C:\Users\%USERPROFILE%\Appdata\Local\Temp
to the new drive, e.g.D:\chiaDB\
- In case you already used
chia db upgrade
, remove the blockchain_v2_mainnet.sqlite that was created in your target folder. chia db upgrade
after you are done, don't forget to set back your temporary folder back to your original folder!
4. SpaceFarmer Community Node
It is also possible to farm without running a full node locally. Using the hooks that already exist in Chia 1.3+, we created the SpaceFarmer Community Node to allow farmers that cannot run their own node to continue farming.