[Deploying Sakai] Profile2 issue [was: Problems with deprecated tools after upgrade]
Markus Binsteiner
lists.m at ilmark.us
Tue Aug 17 01:04:42 PDT 2010
Nice! Thanks Steve, that worked like a treat, for both scenarios (local
& remote mysql db).
Thanks again, very much appreciated!
Cheers,
Markus
On Tue, 2010-08-17 at 09:10 +1000, Steve Swinsburg wrote:
> Hi Markus,
>
>
> Ok we are getting somewhere :)
>
>
> Yes, it looks like you need the DB upgrade script. 1.3.9 modified the
> preferences table due to the changed Twitter integration. Here tis:
>
>
> /* remove twitter from preferences (PRFL-94) */
> alter table PROFILE_PREFERENCES_T drop TWITTER_ENABLED;
> alter table PROFILE_PREFERENCES_T drop TWITTER_USERNAME;
> alter table PROFILE_PREFERENCES_T drop TWITTER_PASSWORD;
>
>
> /* add external integration table (PRFL-94) */
> create table PROFILE_EXTERNAL_INTEGRATION_T (
> USER_UUID varchar(99) not null,
> TWITTER_TOKEN varchar(255),
> TWITTER_SECRET varchar(255),
> primary key (USER_UUID)
> );
>
>
> This might also be related to the first issue.
>
>
> Run the above then let me know how you get on.
>
>
> regards,
> Steve
>
>
>
> On 17/08/2010, at 1:03 AM, Markus Binsteiner wrote:
>
> > Hi Steve,
> >
> > On Mon, 2010-08-16 at 21:23 +1000, Steve Swinsburg wrote:
> >
> > > The issue seems to be this:
> > > profileLogic.createDefaultPreferencesRecord(userUuid)
> > >
> > >
> > > which will create a record if you don't already have one. But that
> > > shouldn't block anything, it's a simple insert by Hibernate. I
> > > noticed
> > > a few MySQL exceptions in there, what do your MySQL logs say?
> >
> > We're using a remote mysql db and I don't have access to the logs
> > right
> > now. But for the sake of testing I imported a dump of the db into a
> > local instance of mysql.
> > Now the behaviour is different: I can click all the links and the
> > expected pages show up, except for the last one (Preferences) which
> > throws an exceptions (see below). Seems like the db update scripts
> > maybe
> > missed something?
> > I really don't understand why it (kinda) works for he local db, but
> > not
> > for the remote one. Any idea
> >
> > Thanks for your help,
> > Markus
> >
> > The stacktrace:
> >
> > 2010-08-17 02:56:32,698 INFO TP-Processor8
> > org.sakaiproject.profile2.logic.ProfileLogicImpl - Created default
> > preferences record for user: 7a41c257-1336-4e1b-809a-e5bec01877f3
> > 2010-08-17 02:56:32,755 WARN TP-Processor8
> > org.hibernate.util.JDBCExceptionReporter - SQL Error: 1364,
> > SQLState:
> > HY000
> > 2010-08-17 02:56:32,755 ERROR TP-Processor8
> > org.hibernate.util.JDBCExceptionReporter - Field 'TWITTER_ENABLED'
> > doesn't have a default value
> > 2010-08-17 02:56:32,758 ERROR TP-Processor8
> > org.hibernate.event.def.AbstractFlushingEventListener - Could not
> > synchronize database state with session
> > org.hibernate.exception.GenericJDBCException: Could not execute JDBC
> > batch update
> > at
> > org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
> > at
> > org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
> > at
> > org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
> > at
> > org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:254)
> > at
> > org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
> > at
> > org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
> > at
> > org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
> > at
> > org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
> > at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1001)
> > at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:339)
> > at
> > org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
> > at
> > org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
> > at
> > org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
> > at
> > org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
> > at
> > org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
> > at
> > org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
> > at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> > at
> > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
> > at $Proxy29.createDefaultPreferencesRecord(Unknown Source)
> > at
> > org.sakaiproject.profile2.tool.pages.MyPreferences.<init>(MyPreferences.java:52)
> > at org.sakaiproject.profile2.tool.pages.BasePage
> > $5.onClick(BasePage.java:126)
> > at
> > org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:214)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > at java.lang.reflect.Method.invoke(Method.java:592)
> > at
> > org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:183)
> > at
> > org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
> > at
> > org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> > at
> > org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
> > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297)
> > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399)
> > at org.apache.wicket.RequestCycle.request(RequestCycle.java:529)
> > at
> > org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
> > at
> > org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:124)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> > at
> > org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:585)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> > at
> > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659)
> > at
> > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
> > at
> > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:359)
> > at
> > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)
> > at org.sakaiproject.tool.impl.ActiveToolComponent
> > $MyActiveTool.forward(ActiveToolComponent.java:500)
> > at
> > org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1221)
> > at
> > org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:204)
> > at
> > org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
> > at
> > org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:768)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> > at
> > org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:646)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> > at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> > at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
> > at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> > at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> > at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
> > at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
> > at
> > org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
> > at
> > org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
> > at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)
> > at
> > org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)
> > at org.apache.jk.common.ChannelSocket
> > $SocketConnection.runIt(ChannelSocket.java:897)
> > at org.apache.tomcat.util.threads.ThreadPool
> > $ControlRunnable.run(ThreadPool.java:689)
> > at java.lang.Thread.run(Thread.java:595)
> > Caused by: java.sql.BatchUpdateException: Field 'TWITTER_ENABLED'
> > doesn't have a default value
> > at
> > com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2020)
> > at
> > com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1451)
> > at
> > org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
> > at
> > org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
> > at
> > org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:247)
> > ... 67 more
> > ERROR: 2010-08-17 02:56:32,813 Method onLinkClicked of interface
> > org.apache.wicket.markup.html.link.ILinkListener targeted at
> > component
> > [MarkupContainer [Component id = preferencesLink]] threw an
> > exception
> > [TP-Processor8]
> > org.apache.wicket.WicketRuntimeException: Method onLinkClicked of
> > interface org.apache.wicket.markup.html.link.ILinkListener targeted
> > at
> > component [MarkupContainer [Component id = preferencesLink]] threw
> > an
> > exception
> > at
> > org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:194)
> > at
> > org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
> > at
> > org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> > at
> > org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
> > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297)
> > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399)
> > at org.apache.wicket.RequestCycle.request(RequestCycle.java:529)
> > at
> > org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
> > at
> > org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:124)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> > at
> > org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:585)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> > at
> > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659)
> > at
> > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
> > at
> > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:359)
> > at
> > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)
> > at org.sakaiproject.tool.impl.ActiveToolComponent
> > $MyActiveTool.forward(ActiveToolComponent.java:500)
> > at
> > org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1221)
> > at
> > org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:204)
> > at
> > org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
> > at
> > org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:768)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> > at
> > org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:646)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> > at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> > at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
> > at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> > at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> > at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
> > at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
> > at
> > org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
> > at
> > org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
> > at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)
> > at
> > org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)
> > at org.apache.jk.common.ChannelSocket
> > $SocketConnection.runIt(ChannelSocket.java:897)
> > at org.apache.tomcat.util.threads.ThreadPool
> > $ControlRunnable.run(ThreadPool.java:689)
> > at java.lang.Thread.run(Thread.java:595)
> > Caused by: java.lang.reflect.InvocationTargetException
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > at java.lang.reflect.Method.invoke(Method.java:592)
> > at
> > org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:183)
> > ... 44 more
> > Caused by: org.springframework.jdbc.UncategorizedSQLException:
> > Hibernate
> > flushing: Could not execute JDBC batch update; uncategorized
> > SQLException for SQL [insert into PROFILE_PREFERENCES_T
> > (EMAIL_REQUEST,
> > EMAIL_CONFIRM, USER_UUID) values (?, ?, ?)]; SQL state [HY000];
> > error
> > code [1364]; Field 'TWITTER_ENABLED' doesn't have a default value;
> > nested exception is java.sql.BatchUpdateException: Field
> > 'TWITTER_ENABLED' doesn't have a default value
> > at
> > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
> > at
> > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
> > at
> > org.springframework.orm.hibernate3.HibernateTransactionManager.convertJdbcAccessException(HibernateTransactionManager.java:801)
> > at
> > org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:787)
> > at
> > org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:663)
> > at
> > org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
> > at
> > org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
> > at
> > org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
> > at
> > org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
> > at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> > at
> > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
> > at $Proxy29.createDefaultPreferencesRecord(Unknown Source)
> > at
> > org.sakaiproject.profile2.tool.pages.MyPreferences.<init>(MyPreferences.java:52)
> > at org.sakaiproject.profile2.tool.pages.BasePage
> > $5.onClick(BasePage.java:126)
> > at
> > org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:214)
> > ... 49 more
> > Caused by: java.sql.BatchUpdateException: Field 'TWITTER_ENABLED'
> > doesn't have a default value
> > at
> > com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2020)
> > at
> > com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1451)
> > at
> > org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
> > at
> > org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
> > at
> > org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:247)
> > at
> > org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
> > at
> > org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
> > at
> > org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
> > at
> > org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
> > at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1001)
> > at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:339)
> > at
> > org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
> > at
> > org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
> >
> >
> >
> > _______________________________________________
> > production mailing list
> > production at collab.sakaiproject.org
> > http://collab.sakaiproject.org/mailman/listinfo/production
> >
> > TO UNSUBSCRIBE: send email to
> > production-unsubscribe at collab.sakaiproject.org with a subject of
> > "unsubscribe"
> >
>
>
More information about the production
mailing list