答案 0 :(得分:1)
源列和目标列具有不同的数据类型
我看不出这条消息有什么不清楚。如果您有主键,则与该主键相关的任何外键都必须是相同的数据类型。
如果您考虑range and storage requirements of the data types:
Data type Range Storage
bigint -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 8 Bytes
int -2,147,483,648 to 2,147,483,647 4 Bytes
smallint -32,768 to 32,767 2 Bytes
tinyint 0 to 255 1 Byte
您可以看到列可以容纳的值范围在数据类型之间存在显着差异。要维护主键和外键之间的关系,类型必须相同,以便它可以保持的值范围匹配。
如果你有一个int
主键但是smallint
外键,那么外键列就不可能保存一个大于32,767的值,因为主键可以保持更大的价值。
因此,解决此问题的方法是在创建关系之前更新要用作外键的列的数据类型以匹配主键。