Same issue there, it seems that my columns declaration don't match (between the reference table and the table owning the foreign key), for example: one is unsigned and not the other, or one is nullable or not the other.
I didn't find a way to solve it yet, except by making these columns match (which is not what I want, for example to have a nullable foreign key).
What I don't understand is that Magento's core succeed in doing this, cf. tables
store_id column is nullable.
[Edit] It seems that generating a
db_schema_whitelist.json with command
bin/magento setup:db-declaration:generate-whitelist --module-name=My_Module solved it, didn't exactly understood why, if anyone has an explanation I would be grateful!