diff --git a/src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs b/src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs
index b343a3f..43467b1 100644
--- a/src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs
+++ b/src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs
@@ -102,7 +102,7 @@ namespace Banshee.Playlist
 
             remove_track_range_command = new HyenaSqliteCommand (@"
                 DELETE FROM CorePlaylistEntries WHERE PlaylistID = ? AND
-                    EntryID IN (SELECT ItemID FROM CoreCache
+                    TrackID IN (SELECT TrackID FROM CoreCache
                         WHERE ModelID = ? LIMIT ?, ?)"
             );
         }
@@ -280,13 +280,17 @@ namespace Banshee.Playlist
 
             // Reorder the selected items
             ServiceManager.DbConnection.BeginTransaction ();
-            foreach (RangeCollection.Range range in TrackModel.Selection.Ranges) {
-                foreach (long entry_id in ServiceManager.DbConnection.QueryEnumerable<long> (select_command, range.Start, range.Count)) {
-                    ServiceManager.DbConnection.Execute (update_command, order++, entry_id);
+            try {
+                foreach (RangeCollection.Range range in TrackModel.Selection.Ranges) {
+                    foreach (long entry_id in ServiceManager.DbConnection.QueryEnumerable<long> (select_command, range.Start, range.Count)) {
+                        ServiceManager.DbConnection.Execute (update_command, order++, entry_id);
+                    }
                 }
+                ServiceManager.DbConnection.CommitTransaction ();
+            } catch {
+                ServiceManager.DbConnection.RollbackTransaction ();
+                throw;
             }
-            ServiceManager.DbConnection.CommitTransaction ();
-
             Reload ();
         }
 
diff --git a/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs b/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs
index 1b800da..bbb2ee4 100644
--- a/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs
+++ b/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs
@@ -248,20 +248,24 @@ namespace Banshee.Daap
 
                     HyenaSqliteConnection conn = ServiceManager.DbConnection;
                     conn.BeginTransaction ();
-                    foreach (DAAP.Track track in database.Tracks) {
-                        daap_track = new DaapTrackInfo (track, this);
-
-                        // Only notify once in a while because otherwise the source Reloading slows things way down
-                        if (++count % notify_every == 0) {
-                            conn.CommitTransaction ();
-                            daap_track.Save (true);
-                            conn.BeginTransaction ();
-                        } else {
-                            daap_track.Save (false);
+                    try {
+                        foreach (DAAP.Track track in database.Tracks) {
+                            daap_track = new DaapTrackInfo (track, this);
+
+                            // Only notify once in a while because otherwise the source Reloading slows things way down
+                            if (++count % notify_every == 0) {
+                                conn.CommitTransaction ();
+                                daap_track.Save (true);
+                                conn.BeginTransaction ();
+                            } else {
+                                daap_track.Save (false);
+                            }
                         }
+                        conn.CommitTransaction ();
+                    } catch {
+                        ServiceManager.DbConnection.RollbackTransaction ();
+                        throw;
                     }
-                    conn.CommitTransaction ();
-
                     // Save the last track once more to trigger the NotifyTrackAdded
                     if (daap_track != null) {
                         daap_track.Save ();
