(2015-10-24, 00:56)Milhouse Wrote: (2015-10-23, 23:09)Raytestrak Wrote: Just tried the new 5.7.9 MySQL. All looked well, until I tried to clean my database. It couldn't remove items from my database be doing a cleanup, only manual deletion worked. It was a clean install by the way. Back to 5.6 it is ...
Your debug log (wiki) would have been useful.
I'm experiencing the same problem that
Raytestrak.
Database cleaning in MySQL 5.7 fails.
Code:
23:57:41 T:2832 DEBUG: Mysql Start transaction
23:57:41 T:2832 DEBUG: DialogProgress::StartModal called
23:57:41 T:2832 DEBUG: ------ Window Init (DialogProgress.xml) ------
23:57:42 T:2832 DEBUG: SECTION:LoadDLL(special://xbmcbin/system/libnfs.dll)
23:57:42 T:2832 DEBUG: NFS: Context for 127.0.0.1/movies not open - get a new context.
23:57:42 T:2832 DEBUG: NFS: Connected to server 127.0.0.1 and export /movies
23:57:42 T:2832 DEBUG: NFS: chunks: r/w 8192/8192
23:57:54 T:2832 DEBUG: NFS: Context for 127.0.0.1/tvshows not open - get a new context.
23:57:54 T:2832 DEBUG: NFS: Connected to server 127.0.0.1 and export /tvshows
23:57:54 T:2832 DEBUG: NFS: chunks: r/w 8192/8192
23:57:54 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1349041, new: 1361338
23:57:54 T:2832 DEBUG: NFS: Using cached context.
23:57:54 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/tvshows, old: 1361267, new: 1361348
23:57:54 T:2832 DEBUG: NFS: Using cached context.
23:57:54 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1361338, new: 1361437
23:57:54 T:2832 DEBUG: NFS: Using cached context.
23:57:54 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/tvshows, old: 1361348, new: 1361466
23:57:54 T:2832 DEBUG: NFS: Using cached context.
23:57:54 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1361437, new: 1361520
23:57:54 T:2832 DEBUG: NFS: Using cached context.
23:57:54 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/tvshows, old: 1361466, new: 1361521
23:57:54 T:2832 DEBUG: NFS: Using cached context.
23:57:54 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1361520, new: 1361538
23:57:54 T:2832 DEBUG: NFS: Using cached context.
23:57:55 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/tvshows, old: 1361521, new: 1362842
23:57:55 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1361538, new: 1362907
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: CVideoDatabase::CleanDatabase: Cleaning paths that don't exist and have content set...
23:57:56 T:2832 DEBUG: NFS: Context for 127.0.0.1/artwork not open - get a new context.
23:57:56 T:2832 DEBUG: NFS: Connected to server 127.0.0.1 and export /artwork
23:57:56 T:2832 DEBUG: NFS: chunks: r/w 8192/8192
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1362907, new: 1363156
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/tvshows, old: 1362842, new: 1363305
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1363156, new: 1363306
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/tvshows, old: 1363305, new: 1363306
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1363306, new: 1363307
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/tvshows, old: 1363306, new: 1363336
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1363307, new: 1363337
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/tvshows, old: 1363336, new: 1363337
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: NFS: Refreshing context for 127.0.0.1/movies, old: 1363337, new: 1363337
23:57:56 T:2832 DEBUG: NFS: Using cached context.
23:57:56 T:2832 DEBUG: CVideoDatabase::CleanDatabase: Cleaning tvshow table
23:57:56 T:2832 DEBUG: CVideoDatabase::CleanDatabase: Cleaning path table
23:57:56 T:2832 DEBUG: Mysql execute: DELETE FROM path WHERE (strContent IS NULL OR strContent = '') AND (strSettings IS NULL OR strSettings = '') AND (strHash IS NULL OR strHash = '') AND (exclude IS NULL OR exclude != 1) AND (idParentPath IS NULL OR NOT EXISTS (SELECT 1 FROM (SELECT idPath FROM path) as parentPath WHERE parentPath.idPath = path.idParentPath)) AND NOT EXISTS (SELECT 1 FROM files WHERE files.idPath = path.idPath) AND NOT EXISTS (SELECT 1 FROM tvshowlinkpath WHERE tvshowlinkpath.idPath = path.idPath) AND NOT EXISTS (SELECT 1 FROM movie WHERE movie.c23 = path.idPath) AND NOT EXISTS (SELECT 1 FROM episode WHERE episode.c19 = path.idPath) AND NOT EXISTS (SELECT 1 FROM musicvideo WHERE musicvideo.c14 = path.idPath)
23:57:56 T:2832 ERROR: SQL: Undefined MySQL error: Code (1093)
Query: DELETE FROM path WHERE (strContent IS NULL OR strContent = '') AND (strSettings IS NULL OR strSettings = '') AND (strHash IS NULL OR strHash = '') AND (exclude IS NULL OR exclude != 1) AND (idParentPath IS NULL OR NOT EXISTS (SELECT 1 FROM (SELECT idPath FROM path) as parentPath WHERE parentPath.idPath = path.idParentPath)) AND NOT EXISTS (SELECT 1 FROM files WHERE files.idPath = path.idPath) AND NOT EXISTS (SELECT 1 FROM tvshowlinkpath WHERE tvshowlinkpath.idPath = path.idPath) AND NOT EXISTS (SELECT 1 FROM movie WHERE movie.c23 = path.idPath) AND NOT EXISTS (SELECT 1 FROM episode WHERE episode.c19 = path.idPath) AND NOT EXISTS (SELECT 1 FROM musicvideo WHERE musicvideo.c14 = path.idPath)
23:57:56 T:2832 ERROR: CVideoDatabase::CleanDatabase failed
23:57:56 T:2832 DEBUG: Mysql rollback transaction
In MySQL Workbench if I copy and paste the last SQL query, the db throws the following error
Code:
Error Code: 1093. You can't specify target table 'path' for update in FROM clause
I have a bit of experience in SQL Scripting, mostly T-SQL, but it looks like some problem while directly referencing the
path table inside the sub-queries that are being joined in the outer tables to obtain the orphaned keys that are going to be deleted in the
path table. So I tried to rewrite the query, but I'm not sure if the syntax is correct and it's not going to create inconsistency in the db.
Oh, by the way, in the
MySQL 5.7 Reference manual, they say that, I think that is something they recently changed.
Quote:Subqueries
You cannot delete from a table and select from the same table in a subquery.
Anyway, it's just a snipset
and I'm glad to help.
Code:
-- SELECT t1.*
DELETE t1
FROM path t1
LEFT JOIN path t2 ON t1.idPath = t2.idParentPath
LEFT JOIN files t3 ON t1.idPath = t3.idPath
LEFT JOIN tvshowlinkpath t4 ON t1.idPath = t4.idPath
LEFT JOIN movie t5 ON t1.idPath = t5.c23
LEFT JOIN episode t6 ON t1.idPath = t6.c19
LEFT JOIN musicvideo t7 ON t1.idPath = t7.c14
WHERE
(t1.strContent IS NULL OR t1.strContent = '')
AND (t1.strSettings IS NULL OR t1.strSettings = '')
-- AND (t1.strHash IS NULL OR t1.strHash = '')
AND (t1.exclude IS NULL OR t1.exclude != 1)
AND t2.idParentPath IS NULL
AND t3.idPath IS NULL
AND t4.idPath IS NULL
AND t5.c23 IS NULL
AND t6.c19 IS NULL
AND t7.c14 IS NULL;