Django: เพิ่ม m2m ผ่านสาเหตุ 'ธุรกรรมปัจจุบันถูกยกเลิก คำสั่งจะถูกละเว้นจนกระทั่งสิ้นสุดบล็อกธุรกรรม'

ฉันกำลังพยายามเพิ่มความสัมพันธ์ m2m ผ่านตารางผ่าน และโดยไม่คาดคิด ฉันพบข้อผิดพลาดต่อไปนี้:

'ธุรกรรมปัจจุบันถูกยกเลิก คำสั่งถูกละเว้นจนกระทั่งสิ้นสุดบล็อกธุรกรรม'

มี 2 ​​ประเด็นแปลกเกี่ยวกับเรื่องนี้ อย่างแรกคือ ฉันได้ย้าย/ซิงค์แอปที่เกี่ยวข้องทั้งหมดเรียบร้อยแล้ว ประการที่สองคือทั้งโมเดลที่เกี่ยวข้องและโมเดลที่เป็นปัญหา (AddedFeature) สามารถบันทึกลงในฐานข้อมูลได้สำเร็จแม้ว่าจะมีข้อผิดพลาดเกิดขึ้นก็ตาม นั่นคือแม้ว่าธุรกรรมจะถูกยกเลิก แต่อินสแตนซ์ AddedFeature จะถูกบันทึกลงในฐานข้อมูล

http://dpaste.com/1357120/

ขอย้ำอีกครั้งว่าการรีเฟรชฐานข้อมูลของฉันและการโยกย้าย/การซิงค์ใหม่ ไม่ ช่วยแก้ปัญหาได้


person tsurantino    schedule 26.08.2013    source แหล่งที่มา
comment
ปิด debug_toolbar ของคุณและดูว่ามีการเปลี่ยนแปลงข้อความข้อยกเว้นหรือไม่   -  person Maciej Gol    schedule 26.08.2013
comment
นั่นได้ผล! ฉันไม่รู้ว่าทำไมและจะแก้ไขได้อย่างไร   -  person tsurantino    schedule 26.08.2013
comment
เป็นเพราะส่วนหนึ่งของรหัสของคุณที่อยู่ภายใต้การจัดการธุรกรรมกำลังทำให้เกิดข้อยกเว้นที่คุณไม่ได้จัดการ (โดยการย้อนกลับธุรกรรมไปยังจุดบันทึก) และต่อมาเมื่อมิดเดิลแวร์กำลังประมวลผลการตอบสนองก็มาถึงมิดเดิลแวร์ django_toolbar ซึ่งทำการสืบค้น sql ในระหว่างธุรกรรมที่ได้รับ ถูกยกเลิกโดยรหัสของคุณ ซึ่งทำให้เกิดข้อยกเว้นที่คุณเคยพบ นั่นเป็นประโยคเดียวที่ยาว :O   -  person Maciej Gol    schedule 27.08.2013


คำตอบ (1)


ค้นหาปัญหาที่เกิดขึ้นก่อนข้อผิดพลาดนี้ รหัสของคุณหรือรหัสที่คุณใช้อยู่ ละเว้นข้อผิดพลาดของฐานข้อมูล ดังนั้นการดำเนินการครั้งต่อไปจึงล้มเหลว

คุณต้องค้นหาในฐานข้อมูลและ/หรือบันทึกแอปพลิเคชันเพื่อค้นหาปัญหาก่อนหน้านี้ จากนั้นตรวจสอบว่าส่วนใดของโค้ดของแอปที่กลืนข้อยกเว้นฐานข้อมูลโดยไม่บันทึกและยกเลิกธุรกรรม

การตั้งค่า log_statement = 'all' ใน postgresql.conf จะมีประโยชน์สำหรับสิ่งนี้

person Craig Ringer    schedule 27.08.2013