I recently upgraded my subsonic server from 6.0 to 6.1 on an ubuntu 14.04, using the .deb file.
The dpkg process went fine and the service started correctly. But when I'm trying to login, I receive an error saying that a column is missing from the DB (PREFERRED_VIDEO_BITRATE). See below
- Code: Select all
Error
Subsonic encountered an internal error. You can report this error in the Subsonic Forum. Please include the information below.
Exception org.springframework.jdbc.BadSqlGrammarException
Message PreparedStatementCallback; bad SQL grammar [select username, locale, theme_id, final_version_notification, beta_version_notification, song_notification, main_track_number, main_artist, main_album, main_genre, main_year, main_bit_rate, main_duration, main_format, main_file_size, playlist_track_number, playlist_artist, playlist_album, playlist_genre, playlist_year, playlist_bit_rate, playlist_duration, playlist_format, playlist_file_size, last_fm_enabled, last_fm_username, last_fm_password, transcode_scheme, show_now_playing, selected_music_folder_id, party_mode_enabled, now_playing_allowed, avatar_scheme, system_avatar_id, changed, show_chat, show_artist_info, auto_hide_play_queue, view_as_list, default_album_list, queue_following_songs, show_side_bar, show_index_in_side_bar, preferred_video_bitrate from user_settings where username=?]; nested exception is java.sql.SQLException: Column not found: PREFERRED_VIDEO_BITRATE in statement [select username, locale, theme_id, final_version_notification, beta_version_notification, song_notification, main_track_number, main_artist, main_album, main_genre, main_year, main_bit_rate, main_duration, main_format, main_file_size, playlist_track_number, playlist_artist, playlist_album, playlist_genre, playlist_year, playlist_bit_rate, playlist_duration, playlist_format, playlist_file_size, last_fm_enabled, last_fm_username, last_fm_password, transcode_scheme, show_now_playing, selected_music_folder_id, party_mode_enabled, now_playing_allowed, avatar_scheme, system_avatar_id, changed, show_chat, show_artist_info, auto_hide_play_queue, view_as_list, default_album_list, queue_following_songs, show_side_bar, show_index_in_side_bar, preferred_video_bitrate from user_settings where username=?]
Java version Oracle Corporation 1.7.0_131
Operating system Linux 4.4.0-75-generic
Server jetty-6.1.x
Memory Used 318 of 427 MB
Stack trace org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [select username, locale, theme_id, final_version_notification, beta_version_notification, song_notification, main_track_number, main_artist, main_album, main_genre, main_year, main_bit_rate, main_duration, main_format, main_file_size, playlist_track_number, playlist_artist, playlist_album, playlist_genre, playlist_year, playlist_bit_rate, playlist_duration, playlist_format, playlist_file_size, last_fm_enabled, last_fm_username, last_fm_password, transcode_scheme, show_now_playing, selected_music_folder_id, party_mode_enabled, now_playing_allowed, avatar_scheme, system_avatar_id, changed, show_chat, show_artist_info, auto_hide_play_queue, view_as_list, default_album_list, queue_following_songs, show_side_bar, show_index_in_side_bar, preferred_video_bitrate from user_settings where username=?]; nested exception is java.sql.SQLException: Column not found: PREFERRED_VIDEO_BITRATE in statement [select username, locale, theme_id, final_version_notification, beta_version_notification, song_notification, main_track_number, main_artist, main_album, main_genre, main_year, main_bit_rate, main_duration, main_format, main_file_size, playlist_track_number, playlist_artist, playlist_album, playlist_genre, playlist_year, playlist_bit_rate, playlist_duration, playlist_format, playlist_file_size, last_fm_enabled, last_fm_username, last_fm_password, transcode_scheme, show_now_playing, selected_music_folder_id, party_mode_enabled, now_playing_allowed, avatar_scheme, system_avatar_id, changed, show_chat, show_artist_info, auto_hide_play_queue, view_as_list, default_album_list, queue_following_songs, show_side_bar, show_index_in_side_bar, preferred_video_bitrate from user_settings where username=?]
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:220)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:607)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:641)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:670)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:678)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:710)
at net.sourceforge.subsonic.dao.AbstractDao.query(AbstractDao.java:84)
at net.sourceforge.subsonic.dao.AbstractDao.queryOne(AbstractDao.java:150)
at net.sourceforge.subsonic.dao.UserDao.getUserSettings(UserDao.java:149)
at net.sourceforge.subsonic.service.SettingsService.getUserSettings(SettingsService.java:1211)
at net.sourceforge.subsonic.controller.MultiController.index(MultiController.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:25)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:36)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:41)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
Caused by: java.sql.SQLException: Column not found: PREFERRED_VIDEO_BITRATE in statement [select username, locale, theme_id, final_version_notification, beta_version_notification, song_notification, main_track_number, main_artist, main_album, main_genre, main_year, main_bit_rate, main_duration, main_format, main_file_size, playlist_track_number, playlist_artist, playlist_album, playlist_genre, playlist_year, playlist_bit_rate, playlist_duration, playlist_format, playlist_file_size, last_fm_enabled, last_fm_username, last_fm_password, transcode_scheme, show_now_playing, selected_music_folder_id, party_mode_enabled, now_playing_allowed, avatar_scheme, system_avatar_id, changed, show_chat, show_artist_info, auto_hide_play_queue, view_as_list, default_album_list, queue_following_songs, show_side_bar, show_index_in_side_bar, preferred_video_bitrate from user_settings where username=?]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
at org.springframework.jdbc.core.JdbcTemplate$SimplePreparedStatementCreator.createPreparedStatement(JdbcTemplate.java:1322)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:585)
... 68 more
Reverting back to 6.0 and everything work again as expected.
How can I fix this without rebuilding the entire DB? I don't want to loose starred songs, artists nor playlists.
I was thinking installing a new server on an other machine and try to manually add the missing parts in the DB script. But depending on the differences, this can be a bad idea.
Is there a way I can "migrate" the DB easily ?
Thanks for your help