2017-02-16 18 views
6

मैं Postgresql 9.6.1, प्ली के साथ चालाक का उपयोग कर रहा हूँ! 2.5 और प्ले-स्लिक 2.0.2।Slick 3: insertOrUpdate काम नहीं कर रहा

(मैं भी चालाक-पीजी 0.14.3 का उपयोग लेकिन मुझे नहीं लगता है कि यह यहाँ कुछ भी बदल जाता है।)

मैं एक बहुत सीधे आगे रास्ते में insertOrUpdate उपयोग कर रहा हूँ लेकिन मैं अभी भी एक अनूठा अपवाद मिलता है।

def clientId = column[String]("client_id", O.PrimaryKey) 
:

ERROR: duplicate key value violates unique constraint "ga_client_id_pkey" 
    Detail: Key (client_id)=(1885746393.1464005051) already exists 

लेकिन, मेरा तालिका client_id प्राथमिक कुंजी के रूप के साथ परिभाषित किया गया है: मैं हमेशा एक एसक्यूएल अपवाद अगर मैं इसे कई बार चलाएँ:

मैं insertOrUpdate का उपयोग कर एक बहुत ही साधारण परीक्षण है

और इसके बाद के रूप में एसक्यूएल में परिभाषित:

client_id TEXT NOT NULL UNIQUE PRIMARY KEY 

समारोह बस का परीक्षण करता है:

db.run(gaClientIds.insertOrUpdate(gaClientId)) 

और नियंत्रक बस इस तरीकों कॉल करता है और करता है और कुछ नहीं।

एक अजीब चीज यह है कि विधियों को लॉन्च करने से कई बार त्रुटि नहीं होती है लेकिन नियंत्रक करता है हालांकि यह केवल विधि को कॉल करता है।

insertOrUpdate स्लिम फ़ंक्शन अभी तक सुनिश्चित नहीं है या मुझे कुछ याद आ रही है?

+0

एक ही समस्या के कार्यान्वयन देता है की कोशिश कर सकते में समर्थित है। 2.1। @ सिमॉन आपको समाधान मिला? – Stoecki

+0

दुर्भाग्य से मुझे मिला एकमात्र समाधान सादे वर्ग में डेटाबेस कॉल लिखना है ... – Simon

+0

यह मेरा समाधान था – Stoecki

उत्तर

2

insertOrUpdate केवल MySQL चालक

http://slick.lightbend.com/doc/3.2.1/supported-databases.html

आप इस पुस्तकालय जो आप slick3 के साथ मेरी तरफ insertOrUpdate/Upsert

https://github.com/tminglei/slick-pg

+1

आईएमओ, डॉक्टर सोचता है कि यह हर ड्राइवर के लिए समर्थित है और मैंने पहले कभी यह पृष्ठ नहीं देखा था । आपके प्रतिक्रिया के लिए धन्येवाद। – Simon

संबंधित मुद्दे