2016-11-07 463 views
0

我越來越Django的管理命令的MySQL錯誤

django.db.utils.NotSupportedError: (1235, "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")

當我嘗試運行此腳本

class Command(NoArgsCommand): 
    def handle_noargs(self, **options): 
     survey_res = SurveyResults.objects.all() 
     for i in survey_res: 
      rescount = SurveyResults.objects.filter(pkey=i.pkey, partner_id=i.partner_id).count() 
      if rescount > 1: 
       objs = SurveyResults.objects.filter(pkey=i.pkey, partner_id=i.partner_id)[:1] 
       SurveyResults.objects.exclude(pk__in=objs).delete() 

任何解決方案..? 我想刪除除最近有兩個共同的領域的所有記錄。

+0

dunno,但您可以嘗試拆分2個查詢中的最後一行,首先排除它們,然後刪除這些對象。 (如果這是錯誤來自的地方) – FeedTheWeb

回答

0

那麼你的MySQL版本不支持這些命令,所以你的選擇是 要麼使用不同版本的mySQL,要麼不使用'IN',因爲那好像是 的罪魁禍首。因此,如何改變最後一位:

if rescount > 1: 
    objs = SurveyResults.objects.filter(pkey=i.pkey, partner_id=i.partner_id)[1:] 
    for obj in objs: 
     obj.delete() 

這樣,你刪除所有,但第一個返回SurveyResults。當然,假設你的結果是按照最新的順序排列的,因爲你表示你想保持最新的。