次の例を ここ から実行しようとしています
CREATE TYPE address (
street text,
city text,
Zip int
);
CREATE TABLE user_profiles (
login text PRIMARY KEY,
first_name text,
last_name text,
email text,
addresses map<text, address>
);
ただし、user_profiles
テーブルを作成しようとすると、次のエラーが発生します。
InvalidRequest: code=2200 [Invalid query] message="Non-frozen collections are not
allowed inside collections: map<text, address>
なぜこれが起こる可能性があるのかについて何か考えはありますか?
2.1.8を実行していますが、同じエラーメッセージが表示されます。これを修正するには、frozen
キーワードが必要です。
CREATE TABLE user_profiles (
login text PRIMARY KEY,
first_name text,
last_name text,
email text,
addresses map<text, frozen <address>>
);
Frozen UDTは(今のところ)単一の値にシリアル化されるため、必要です。あなたが従うべき同様のより良い例は ユーザー定義型のドキュメント の例かもしれません。それを試してみてください。
cassandraマップで、テキスト」ではなく「文字列」を誤って使用したときに、このメッセージが表示されました。
mymap map<bigint, string>
私はグーグルからこのstackoverflowスレッドに従いました、そして私はこの情報が誰かに彼らの時間を数分節約することができると思いました。
冷凍されていないUDTはまだサポートされていません。 UDTごとにこのキーワードを明示的に指定するようにユーザーに求める理由は、既存のコードを壊すことなく、3.xに 可変UDT を導入できるようにするためです。