如何在应用程序启动期间处理org.hibernate.exception.genericjdbception?

q5iwbnjs  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(328)

我正在学习hibernate/springmvc,启动服务器时出现了一个异常。我在intellij中工作,这个数据库连接到我的ide并且工作得很好(同样“test connection”也可以),但是当我试图在配置文件中创建bean时,它根本不工作。有什么问题吗?

@Configuration
@EnableTransactionManagement
@ComponentScan("com.packt.webstore")
public class RootApplicationContextConfig {
@Bean
public DataSource getDataSource() {
    BasicDataSource dataSource = new BasicDataSource();
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    dataSource.setUrl("jdbc:mysql://localhost:3306/shop");
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    return dataSource;
}

@Bean
public LocalSessionFactoryBean getSessionFactory() {
    LocalSessionFactoryBean factoryBean = new 
    LocalSessionFactoryBean();
    factoryBean.setDataSource(getDataSource());

    Properties props = new Properties();
    props.put("hibernate.show_sql", "true");
    props.put("hibernate.hbm2ddl.auto", "update");
    props.put("hibernate.dialect",
        "org.hibernate.dialect.MySQLDialect");
    factoryBean.setHibernateProperties(props);
    factoryBean.setPackagesToScan("com.packt.webstore");
    return factoryBean;
}

@Bean
public HibernateTransactionManager getTransactionalManager() {
    HibernateTransactionManager transactionManager = new
            HibernateTransactionManager();

    transactionManager.setSessionFactory(getSessionFactory()
        .getObject());
    return transactionManager;
  }
}

异常日志:

Error creating bean with name 'productController': Unsatisfied 
dependency expressed through field 'productService': Error creating 
bean with name 'productServiceImpl': Unsatisfied dependency expressed 
through field 'products': Error creating bean with name 
'productDaoImpl': Unsatisfied dependency expressed through field 
'factory': Error creating bean with name 'getSessionFactory' defined in 
com.packt.webstore.config.RootApplicationContextConfig: Invocation of 
init method failed; nested exception is 
org.hibernate.exception.GenericJDBCException: Unable to open JDBC 
Connection for DDL execution;
mftmpeh8

mftmpeh81#

无法打开jdbc连接以执行ddl
告诉你不 Connection 可以在执行代码时建立到配置的数据库。这可能是由许多原因造成的,因此我只列出最可能的原因:
mysql根本没有运行。
是你开始的吗?通过检查正在运行的进程列表进行验证(取决于操作系统)。
mysql没有监听默认端口3306。
你改了吗?如果是这样,请相应地更改代码/配置。
假设mysql正在运行和侦听(端口3306),则用户root的密码不是 root .
你把密码设置为 root ? 使用这些凭据通过mysql cli本地连接。如果可以,您可以排除密码不匹配的情况。
用户 root 缺少连接到名称为的数据库的权限 shop .
您是否更改了用户的权限 root 限制访问 shop 数据库?如果是,请检查和/或更改此用户对本地连接的权限(授予)。
希望这张清单有用。

更新-1

取决于 mysql-connector.jar ,您必须仔细检查/选择驱动程序类的名称:
mysql连接器/j 5.x
jdbc.driver\u class=> com.mysql.jdbc.Driver mysql连接器/j 6.x+
jdbc.driver\u class=> com.mysql.cj.jdbc.Driver

mi7gmzs6

mi7gmzs62#

改为Hibernate5和MySQL5.1.39

相关问题