upgradeToAndCall can't initialise


I am quite confuse about this. Took it from the TransparentProxy contract.

Let's say I have an implementation contract A, I have a proxy that I initialise with this contract A.
I have a new implementation contract B that has its own initialiser, if I try to call upgradeToAndCall I get an Error: VM Exception while processing transaction: reverted with reason string 'Initializable: contract is already initialized .

I guess it makes sense that I cannot initialise a contract twice so I am guessing I cannot call an second implementation contract with a initialise modifier?

Yes, you cannot call an initializer function on a contract that has already been initialized. You need to use reinitializer for this purpose. See docs.