:
`Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'truncate table myTable; SET FOREIGN_KEY_CHECKS = 1' at line 1`
अगर मैं प्रश्नों क्रमानुसार निष्पादित, मैं मेज काट-छांट नहीं कर सकते हैं
यह हो रहा है, क्योंकि अगलीकरण आपको गुणक निष्पादित करने की अनुमति नहीं देगी ई sequelize.query
कॉल के साथ ई प्रश्न। वर्णित परिदृश्य को अभी केवल sequelize.sync({ force: true })
के लिए संभाला जाता है जो सभी तालिकाओं को छोड़ देता है और बाद में उन्हें पुन: प्रयास करता है। विधि आंतरिक रूप से निम्नलिखित कोड का उपयोग कर रहा है:
https://github.com/sequelize/sequelize/blob/a014bd8d172fb8fd9881cee866abfcab842c30fc/lib/query-interface.js#L227-228
यह मूल रूप से हर मेज और चेक लोड करता है अगर वहाँ विदेशी चाबियाँ हैं। यदि ऐसा है, तो अगलीकरण उन्हें अन्य तालिका से पहले छोड़ देगी। आप शायद तर्क को अपना सकते हैं। इसके अलावा: यदि आप उस सामान को लागू करने का निर्णय लेते हैं, तो आप शायद जिथब पर एक पुल अनुरोध खोल सकते हैं। वह मुश्किल चट्टान होगा। एक अन्य विकल्प है जो शायद काम करेगा, निम्नलिखित है:
sequelize.transaction(function(t) {
var options = { raw: true, transaction: t }
sequelize
.query('SET FOREIGN_KEY_CHECKS = 0', null, options)
.then(function() {
return sequelize.query('truncate table myTable', null, options)
})
.then(function() {
return sequelize.query('SET FOREIGN_KEY_CHECKS = 1', null, options)
})
.then(function() {
return t.commit()
})
}).success(function() {
// go on here ...
})
यह काम करता है क्योंकि लेनदेन एक समर्पित कनेक्शन का उपयोग कर रहे हैं, जिसका अर्थ है आप आसानी से एक पंक्ति में आदेश पर अमल कर सकते हैं।
धन्यवाद, मेरी समस्या हल हो गई। – Juanra
तो, दूसरे शब्दों में हमें अपने एफके स्वयं की परवाह करना है क्योंकि Sequelize हर समय बुरी तरह विफल रहता है https://github.com/sequelize/sequelize/issues/6894 – Green
मुझे एक त्रुटि है: 'त्रुटि: Sequelize.query केवल पैरामीटर 'एसक्यूएल' और 'विकल्प' का उपयोग करने के लिए दोबारा प्रतिक्रिया दी गई थी। कृपया बीसी के बारे में चेंजलॉग पढ़ें। –