### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current behaviour

crash

### Expected behaviour

no crash

### Steps to reproduce

* Compile 79e8247ddb166f9b980f40249b7372a502402a4d
* Type `migratewallet`

### Relevant log output

```
wallet/scriptpubkeyman.cpp:1915: std::optional<MigrationData> wallet::LegacyScriptPubKeyMan::MigrateToDescriptor(): Assertion `IsMine(desc_spk) != ISMINE_NO' failed.
Aborted (core dumped)
```


### How did you obtain Bitcoin Core

Compiled from source

### What version of Bitcoin Core are you using?

current master

### Operating system and version

Linux

### Machine specifications

_No response_
nWalVersion = nVersion;
    {
        WalBatch* batch = batch_in ? batch_in  new WalBatch(GetDatabase());
        if (nWalVersion > 40000)
            batch->WriteMinVersion(nWalVersion);
        if (!batch_in)
            dee batch;
    }
}
stdset<uint256> CWalGetConflicts(const uint256& txid) const
{
    stdset<uint256> result;
    AssertLockHeld(cs_wal);
    const auto it = mapWal.find(txid);
    if (it == mapWal.end())
        return result;
    const CWalTx& wtx = it->second;
    stdpair<TxSpendsconst_iterator, TxSpendsconst_iterator> range;
    for (const CTxIn& txin  wtx.tx->vin)
    {
        if (mapTxSpends.count(txin.prevout) <= 1)
            continue;  // N
        range = mapTxSpends.equal_range(txin.prevout);
        for (TxSpendsconst_iterator _it = range.first; _it != range.second; ++_it)
            result.insert(_it->second);
    }
    return result;
}
bool CWalHasWalSpend(const CTransactionRef& tx) const
{