PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Django/PostgreSQL varchar से UUID

type uuid आपके डीडीएल स्टेटमेंट में SET DATA TYPE uuid . के लिए शॉर्टहैंड है . मैनुअल:

varchar_pattern_ops एक ऑपरेटर वर्ग है यदि आपके पास uuid . है तो आपके त्रुटि संदेश में इसका उल्लेख किया जाएगा किसी भी अनुक्रमणिका में इस ऑपरेटर वर्ग का उपयोग करना। आमतौर पर तेज़ सॉर्टिंग, पैटर्न मिलान और श्रेणी स्थितियों को सक्षम करने के लिए।

ठीक करने के लिए, परस्पर विरोधी अनुक्रमणिकाएँ छोड़ें, डेटा प्रकार बदलें और फिर विशेष ऑपरेटर वर्ग के बिना अनुक्रमणिकाएँ फिर से बनाएँ - if आपको अभी भी उनकी आवश्यकता है।

हालांकि, कुछ सामान्य प्रश्न जो varchar_pattern_ops . का उपयोग करते हैं इंडेक्स डेटा प्रकार के साथ काम करना बंद कर देगा uuid varchar . के बजाय . पैटर्न-मिलान की तरह:

ऐसी किसी भी क्वेरी को ठीक करना भी सुनिश्चित करें।

@fl0cke ने बताया एक संबंधित उत्तर:

मैं थोड़ा अलग मार्ग सुझाता हूं। इंडेक्स को गिराना, डेटा प्रकार बदलना और फिर . सस्ता है एक नई अनुक्रमणिका बनाएं - यदि यह अभी भी उपयोगी है।

DROP INDEX tbl_guid_varchar_pattern_ops_idx;

ALTER TABLE tbl ALTER COLUMN guid TYPE uuid USING guid::uuid;

CREATE INDEX tbl_guid_idx ON tbl (guid);

अपमानजनक इंडेक्स कैसे खोजें?

Postgres के आधुनिक संस्करणों में आपको \d tbl . के साथ तालिका के लिए मौजूदा अनुक्रमणिकाएँ मिलती हैं psql में।

सभी को पूरा करने के लिए CREATE INDEX दी गई तालिका के लिए कथन:

SELECT pg_get_indexdef(indexrelid) || ';' AS idx
FROM   pg_index
WHERE  indrelid = 'public.tbl'::regclass;  -- optionally schema-qualified

varchar_pattern_ops . का उपयोग करके केवल वही प्राप्त करने के लिए :

SELECT pg_get_indexdef(i.indexrelid) || ';' AS idx
FROM   pg_index i
JOIN   pg_opclass o ON o.oid = ANY (i.indclass)
WHERE  i.indrelid = 'public.big'::regclass
AND    o.opcname = 'varchar_pattern_ops';

विवरण:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ताज़ा भौतिक दृश्य के दौरान पोस्टग्रेज 9.4 हैंग हो जाता है

  2. क्या मुझे लेनदेन में चयन शामिल करना चाहिए?

  3. रेल - वस्तुओं की वस्तुओं को डुप्लिकेट के साथ प्राप्त करें

  4. क्या किसी अन्य तालिका में पंक्तियों से SQL परिणाम कॉलम का नाम देना संभव है? (पोस्टग्रेज)

  5. बड़ी मात्रा में प्रश्नों के साथ नोड-पोस्टग्रेज