mirror of
https://github.com/spl0k/supysonic.git
synced 2024-11-13 21:52:18 +00:00
Avoid Pony/MySQL problem
MySQL throws the following with bulk deletes. Non-bulk deletes don't generate complex SQL statements, so avoid the problem. pony.orm.dbapiprovider.OperationalError: (1093, "Table 'self' is specified twice, both as a target for 'DELETE' and as a separate source for data")
This commit is contained in:
parent
fd21ae41df
commit
a11a02429b
@ -107,7 +107,7 @@ class Folder(PathMixin, db.Entity):
|
||||
not exists(f for f in Folder if f.parent == self) and not self.root)
|
||||
total = 0
|
||||
while True:
|
||||
count = query.delete(bulk = True)
|
||||
count = query.delete(bulk = False)
|
||||
total += count
|
||||
if not count:
|
||||
return total
|
||||
@ -140,7 +140,7 @@ class Artist(db.Entity):
|
||||
@classmethod
|
||||
def prune(cls):
|
||||
return cls.select(lambda self: not exists(a for a in Album if a.artist == self) and \
|
||||
not exists(t for t in Track if t.artist == self)).delete(bulk = True)
|
||||
not exists(t for t in Track if t.artist == self)).delete(bulk = False)
|
||||
|
||||
class Album(db.Entity):
|
||||
_table_ = 'album'
|
||||
@ -180,7 +180,7 @@ class Album(db.Entity):
|
||||
|
||||
@classmethod
|
||||
def prune(cls):
|
||||
return cls.select(lambda self: not exists(t for t in Track if t.album == self)).delete(bulk = True)
|
||||
return cls.select(lambda self: not exists(t for t in Track if t.album == self)).delete(bulk = False)
|
||||
|
||||
class Track(PathMixin, db.Entity):
|
||||
_table_ = 'track'
|
||||
|
Loading…
Reference in New Issue
Block a user