2013-09-10 3 views
0

Я получаю огромный список ошибок при связывании для запуска приложения grails. Приложение работало нормально, пока я не перенесла базу данных с MySQL на SQL Server. Я использовал помощник миграции SQL Server, и там все прекрасно работало. Я также добавил sqljdbc4.jar в каталог lib и обновил DataSource.groovy для работы с SQL Server. Я пытаюсь решить эту проблему уже несколько дней и буду очень благодарен за ваш вклад. Я довольно новичок в Grails, Databases, Servers и т. Д., Поэтому прошу прощения, если я не описал эту ошибку соответствующим образом.Как исправить ошибку org.springframework.beans.factory.BeanCreationException в моем приложении Grails?

Благодарим за помощь!

Версии: Grails 1.3.9, JDK 1.7.0_21, IDE NetBeans 7.3.1 и Microsoft SQL Server 2008

Это ошибка я получаю при запуске в Grails выполнения приложения команды:

 context.GrailsContextLoader Error executing bootstraps: 

    Error creating bean with name 'messageSource': 
    Initialization of bean failed; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'transactionManager': 
    Cannot resolve reference to bean 'sessionFactory' 
    while setting bean property'sessionFactory'; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'sessionFactory': 
    Cannot resolve reference to bean 'hibernateProperties' 
    while setting bean property 'hibernateProperties'; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'hibernateProperties': 
    Cannot resolve reference to bean 'dialectDetector' 
    while setting bean property 'properties' with key [hibernate.dialect]; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'dialectDetector': 
    Invocation of init method failed; nested exception is   
    org.springframework.jdbc.support.MetaDataAccessException: 

    Error while extracting DatabaseMetaData; nested exception is 
    org.apache.commons.dbcp.SQLNestedException: 

    Cannot create PoolableConnectionFactory (Login failed for user 'dev'.) 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'messageSource': 
    Initialization of bean failed; nested exception is   
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'transactionManager': 
    Cannot resolve reference to bean 'sessionFactory' 
    while setting bean property 'sessionFactory'; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'sessionFactory': 
    Cannot resolve reference to bean 'hibernateProperties' 
    while setting bean property 'hibernateProperties'; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'hibernateProperties': 
    Cannot resolve reference to bean 'dialectDetector' 
    while setting bean property 'properties' with key [hibernate.dialect]; nested exception is   
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'dialectDetector': 
    Invocation of init method failed; nested exception is 
    org.springframework.jdbc.support.MetaDataAccessException: 


    Error while extracting DatabaseMetaData; nested exception is 
    org.apache.commons.dbcp.SQLNestedException: 

    Cannot create PoolableConnectionFactory (Login failed for user 'dev'.) 
     at org.grails.tomcat.InlineExplodedTomcatServer.doStart(InlineExplodedTomcatServer.groovy:112) 
     at org.grails.tomcat.InlineExplodedTomcatServer$doStart.callCurrent(Unknown Source) 
     at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:97) 
     at grails.web.container.EmbeddableServer$start.call(Unknown Source) 
     at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158) 
     at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy) 
     at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280) 
     at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy) 
     at _GrailsRun_groovy$_run_closure5.doCall(_GrailsRun_groovy:149) 
     at _GrailsRun_groovy$_run_closure5.call(_GrailsRun_groovy) 
     at _GrailsRun_groovy.runInline(_GrailsRun_groovy:116) 
     at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy) 
     at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59) 
     at RunApp$_run_closure1.doCall(RunApp.groovy:33) 
     at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381) 
     at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415) 
     at gant.Gant$_dispatch_closure7.doCall(Gant.groovy) 
     at gant.Gant.withBuildListeners(Gant.groovy:427) 
     at gant.Gant.this$2$withBuildListeners(Gant.groovy) 
     at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source) 
     at gant.Gant.dispatch(Gant.groovy:415) 
     at gant.Gant.this$2$dispatch(Gant.groovy) 
     at gant.Gant.invokeMethod(Gant.groovy) 
     at gant.Gant.executeTargets(Gant.groovy:590) 
     at gant.Gant.executeTargets(Gant.groovy:589) 

    Caused by: org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'transactionManager': 
    Cannot resolve reference to bean 'sessionFactory' 
    while setting bean property 'sessionFactory'; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'sessionFactory': 
    Cannot resolve reference to bean 'hibernateProperties' 
    while setting bean property 'hibernateProperties'; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'hibernateProperties': 
    Cannot resolve reference to bean 'dialectDetector' 
    while setting bean property 'properties' with key [hibernate.dialect]; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'dialectDetector': 
    Invocation of init method failed; nested exception is 
    org.springframework.jdbc.support.MetaDataAccessException: 

    Error while extracting DatabaseMetaData; nested exception is 
    org.apache.commons.dbcp.SQLNestedException: 

    Cannot create PoolableConnectionFactory (Login failed for user 'dev'.) 
     ... 25 more 



    Caused by: org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'sessionFactory': 
    Cannot resolve reference to bean 'hibernateProperties' 
    while setting bean property 'hibernateProperties'; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'hibernateProperties': 
    Cannot resolve reference to bean 'dialectDetector' 
    while setting bean property 'properties' with key [hibernate.dialect]; nested 
    exception is org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'dialectDetector': 
    Invocation of init method failed; nested exception is 
    org.springframework.jdbc.support.MetaDataAccessException: 

    Error while extracting DatabaseMetaData; nested exception is   
    org.apache.commons.dbcp.SQLNestedException: 

    Cannot create PoolableConnectionFactory (Login failed for user 'dev'.) 
     ... 25 more 



    Caused by: org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'hibernateProperties': 
    Cannot resolve reference to bean 'dialectDetector' 
    while setting bean property 'properties' with key [hibernate.dialect]; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'dialectDetector': 
    Invocation of init method failed; nested exception is 
    org.springframework.jdbc.support.MetaDataAccessException: 

    Error while extracting DatabaseMetaData; nested exception is   
    org.apache.commons.dbcp.SQLNestedException: 

    Cannot create PoolableConnectionFactory (Login failed for user 'dev'.) 
     ... 25 more 



    Caused by: org.springframework.beans.factory.BeanCreationException: 

    Error creating bean with name 'dialectDetector': 
    Invocation of init method failed; nested exception is 
    org.springframework.jdbc.support.MetaDataAccessException: 

    Error while extracting DatabaseMetaData; nested exception is 
    org.apache.commons.dbcp.SQLNestedException: 

    Cannot create PoolableConnectionFactory (Login failed for user 'dev'.) 
     ... 25 more 


    Caused by: org.springframework.jdbc.support.MetaDataAccessException: 

    Error while extracting DatabaseMetaData; 
    nested exception is org.apache.commons.dbcp.SQLNestedException: 

    Cannot create PoolableConnectionFactory (Login failed for user 'dev'.) 
     ... 25 more 


    Caused by: org.apache.commons.dbcp.SQLNestedException: 
    Cannot create PoolableConnectionFactory (Login failed for user 'dev'.) 

     at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) 
     at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) 
     at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 
     at com.sun.proxy.$Proxy10.getMetaData(Unknown Source) 
     ... 25 more 

    Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'dev'. 

     at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197) 
     at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246) 
     at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2529) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1905) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1893) 
     at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1045) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700) 
     at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842) 
     at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) 
     at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 
     at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) 
     at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) 
     ... 28 more 

Вот мой DataSource.groovy файл

dataSource { 
    pooled = true 
    //driverClassName = "com.mysql.jdbc.Driver" (driver for mysql) 
    driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
    dialect = "org.hibernate.dialect.SQLServer2008Dialect" 
    username = "dev" 
    password = "dev" 
    properties { 
     maxActive = 30 
     maxIdle = 5 
     validationQuery = "/* ping */" 
     testWhileIdle = true 
     timeBetweenEvictionRunsMillis = 10000 
     minEvictableIdleTimeMillis = 120000 
    } 
} 

hibernate { 
    cache.use_second_level_cache=true 
    cache.use_query_cache=false 
    cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider' 
} 
// environment specific settings 
environments { 
    development { 
     dataSource { 
      dbCreate = "update" // one of 'create', 'create-drop','update' 
      //url = "jdbc:mysql://localhost/timesheet_development?autoReconnect=true" 
      url = "jdbc:sqlserver://localhost:1433;instanceName=sqlexpress;databaseName=timesheet_development" 
     } 
    } 
    test { 
     dataSource { 
      dbCreate = "update" 
      //url = "jdbc:mysql://localhost/timesheet_test?autoReconnect=true" 
      url = "jdbc:sqlserver://localhost:1433;instanceName=sqlexpress;databaseName=timesheet_test" 
     } 
    } 
    production { 
     dataSource { 
      dbCreate = "update" 
      //url = "jdbc:mysql://localhost/timesheet_production?autoReconnect=true" 
      url = "jdbc:sqlserver://localhost:1433;instanceName=sqlexpress;databaseName=timesheet_update" 
      username = "********" 
      password = "********"   
     } 
    } 
} 
+1

Действительно ли 'dev' является допустимым пользователем экземпляра SQL Server? Кроме того, вы пытались использовать 'validationQuery' для' 'select 1" 'вместо:' validationQuery = "select 1" '? – dmahapatro

+0

«Невозможно создать PoolableConnectionFactory (Ошибка входа в систему для пользователя« dev ».)« –

+0

Я думаю, что вы правы в том, что Dev является действительным пользователем. Я работаю над перенастройкой базы данных с соответствующим пользователем и, надеюсь, это сработает. Сейчас работаем с разрешениями. – Chris

ответ

0

После работы в течение всего дня по этой проблеме и получить ценный вклад от комментариев, я нашел решение моей проблемы.

1) Dev был недействительным пользователем SQL Server, поэтому я добавил его в phpMyAdmin, а также папки безопасности для базы данных. Я также повторно перенастроил базу данных после добавления пользователя dev в MySQL.

2) plugins.searchable = 0.6.4 необходимо закомментировать из файла application.properties, чтобы исправить ошибки трассировки стека.

3) Исключения Runtime Grails были решены путем прохождения таблиц базы данных и исправления типов данных, которые были неправильно перенесены. Все двоичные типы данных должны были быть изменены на тип бит. Приложение grails теперь работает безупречно. Надеюсь, это поможет кому-то еще с этой проблемой!

Смежные вопросы