題名のErrorが出た場合
原因
参照しているカラムが一意ではない、あるいは、NULLを許容するためです。
1つしかPrimary Keyが設定されていない場合に、PrimaryKeyを参照する場合、自動で一意かつNON-NULLになるので、気にする必要はありません。ただし、2組以上のPrimary Keyを参照する場合、あるいは、非キー属性を参照する場合には注意が必要です。以下のような場合です.
解決策
参照していカラム(属性)にNON NULL かつ UNIQUEな制約を与えます。例えば以下のように設定します。data_nameに対してForeign Keyを設定する場合、UNIQUE KEYとPRIMARY KEYを設定します。PRIMARY KEYは組で設定する場合、一方がUNIQUEでなくとも問題ないので、明示的に指定する必要があります。
CREATE TABLE some_data( id serial UNIQUE, data_name VARCHAR(10) UNIQUE, flag bool, data_type myDataType, PRIMARY KEY (id, data_name) ); CREATE TABLE partData( id serial, data_name VARCHAR(10) NOT NULL REFERENCES some_data(data_name), contents VARCHAR );