I was using two different wallet.dat file at the time it happens.
I have a question: Is all the public keys generated by the same private key?
No.
Every address has it's own public key.
Every public key has its own private key.
With the Bitcoin-Qt wallet, the private key is generated completely randomly with no relationship at all to any other private key in the wallet. This means that you need to have a safe copy of every private key in the wallet. It is not possible to re-calculate the private keys from any values.
With some other "deterministic" wallets (such as Electrum) the private keys are generated in a sequence from a "seed" value. This means that with such a "deterministic" wallet, you can re-calculate all the necessary private keys from the single "seed" value in the future if you need to.