org।


205

मैं एक स्प्रिंग-बूट एप्लिकेशन चलाने की कोशिश कर रहा हूं जो स्प्रिंग-जेपा के माध्यम से हाइबरनेट का उपयोग करता है, लेकिन मुझे यह त्रुटि मिल रही है:

Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104)
        at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)
        at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:205)
        at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
        at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843)
        at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)
        at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:336)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550)
        ... 21 more

मेरी pom.xml फ़ाइल यह है:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.8.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
       </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
    </dependency>
</dependencies>

मेरा हाइबरनेट विन्यास यह है कि (इस वर्ग से बोली विधि अंतिम विधि में है):

@Configuration
@EnableTransactionManagement
@ComponentScan({ "com.spring.app" })
public class HibernateConfig {

   @Bean
   public LocalSessionFactoryBean sessionFactory() {
      LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();

      sessionFactory.setDataSource(restDataSource());
      sessionFactory.setPackagesToScan(new String[] { "com.spring.app.model" });
      sessionFactory.setHibernateProperties(hibernateProperties());

      return sessionFactory;
   }

   @Bean
   public DataSource restDataSource() {
      BasicDataSource dataSource = new BasicDataSource();

      dataSource.setDriverClassName("org.postgresql.Driver");
      dataSource.setUrl("jdbc:postgresql://localhost:5432/teste?charSet=LATIN1");
      dataSource.setUsername("klebermo");
      dataSource.setPassword("123");

      return dataSource;
   }

   @Bean
   @Autowired
   public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
      HibernateTransactionManager txManager = new HibernateTransactionManager();
      txManager.setSessionFactory(sessionFactory);
      return txManager;
   }

   @Bean
   public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
      return new PersistenceExceptionTranslationPostProcessor();
   }

   Properties hibernateProperties() {
      return new Properties() {
         /**
         * 
         */
        private static final long serialVersionUID = 1L;

        {
            setProperty("hibernate.hbm2ddl.auto", "create");
            setProperty("hibernate.show_sql", "false");
            setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
         }
      };
   }
}

मैं यहाँ क्या गलत कर रहा हूँ?

जवाबों:


199

सबसे पहले अपने सभी कॉन्फ़िगरेशन को हटा दें स्प्रिंग बूट आपके लिए इसे शुरू करेगा।

सुनिश्चित करें कि आपके पास application.propertiesअपने classpath में एक है और निम्नलिखित गुण जोड़ें।

spring.datasource.url=jdbc:postgresql://localhost:5432/teste?charSet=LATIN1
spring.datasource.username=klebermo
spring.datasource.password=123

spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create

यदि आपको वास्तव में एक्सेस की आवश्यकता है SessionFactoryऔर यह मूल रूप से एक ही डेटा स्रोत के लिए है, तो आप निम्न कार्य कर सकते हैं (जो कि यहां XML के लिए भी प्रलेखित है , JavaConfig के लिए नहीं)।

@Configuration        
public class HibernateConfig {

    @Bean
    public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
         HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
         factory.setEntityManagerFactory(emf);
         return factory;
    }
}

इस तरह से आपके पास EntityManagerFactoryए और ए दोनों हैं SessionFactory

अद्यतन: सीतनिद्रा 5 के रूप में SessionFactoryवास्तव में फैली हुई है EntityManagerFactory। तो एक प्राप्त करने के लिए SessionFactoryआप बस EntityManagerFactoryइसे कास्ट कर सकते हैं या unwrapएक प्राप्त करने के लिए विधि का उपयोग कर सकते हैं ।

public class SomeHibernateRepository {

  @PersistenceUnit
  private EntityManagerFactory emf;

  protected SessionFactory getSessionFactory() {
    return emf.unwrap(SessionFactory.class);
  }

}

मान लें कि आपके पास एक mainविधि है जिसके साथ @EnableAutoConfigurationआपको @EnableTransactionManagementएनोटेशन की आवश्यकता नहीं है , क्योंकि यह आपके लिए स्प्रिंग बूट द्वारा सक्षम किया जाएगा। com.spring.appपैकेज में एक बुनियादी अनुप्रयोग वर्ग पर्याप्त होना चाहिए।

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {


    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

} 

ऐसा कुछ होना चाहिए जो आपके सभी वर्गों (संस्थाओं और स्प्रिंग डेटा आधारित रिपॉजिटरी सहित) का पता लगाने के लिए पर्याप्त हो।

अद्यतन: इन एनोटेशन @SpringBootApplicationको स्प्रिंग बूट के अधिक हाल के संस्करणों में एकल के साथ बदला जा सकता है ।

@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
} 

मैं यह भी commons-dbcpनिर्भरता को दूर करने का सुझाव दूंगा कि स्प्रिंग बूट तेजी से और अधिक मजबूत HikariCPकार्यान्वयन को कॉन्फ़िगर करने की अनुमति देगा ।


1
लेकिन क्या इस फ़ाइल को बनाने से बचने का कोई तरीका है application.propertes? मैं एक तरीका पसंद करता हूं जहां मैं क्लास हाइबरनेटकॉन्फ़िग में सभी कॉन्फ़िगरेशन करता हूं।
क्लेबर मोटा

2
क्यों? स्प्रिंग बूट का पूरा उद्देश्य यह है कि यह आपके लिए ऑटो कॉन्फ़िगरेशन करता है ... इसलिए आप एक गुण फ़ाइल में 7 लाइनों से अधिक वर्बोज़ जावा कॉन्फ़िगरेशन शामिल करना पसंद करते हैं ?!
एम। दीनुम

2
यह भी एक संपत्ति फ़ाइल में 6 लाइनों हो सकता है। जब आप Postgres का उपयोग कर रहे हों, तो आप स्प्रिंग.datasource.driverClassName को सेट करने की आवश्यकता नहीं है क्योंकि बूट इसे spring.datasource.url से हटा देगा।
एंडी विल्किंसन

2
@AlexWorden नहीं, यह नहीं है ... यादृच्छिक टिप्पणियों को डालने के बजाय, आप पहले यह पढ़ना चाहते हैं कि संपत्तियों को विशेष रूप से समर्थन स्प्रिंग बूट में कैसे लोड किया गया है। यदि आप फ़ाइल के अधिकार को सीधे सेट करते हैं, तो डिस्क पर पासवर्ड की समस्या नहीं होती है। उन्हें डेटाबेस में
रखना

4
3 एनोटेशन यानी कॉन्फ़िगरेशन, EnableAutoConfiguration, ComponentScan का उपयोग करने के बजाय। हम स्प्रिंगबूट एप्लायनेशन एनोटेशन
पंकज

158

डेटाबेस सर्वर डाउन के साथ एप्लिकेशन (स्प्रिंग बूट का उपयोग करके) शुरू करते समय मुझे इसी तरह की समस्या का सामना करना पड़ रहा था ।

हाइबरनेट स्वचालित रूप से उपयोग करने के लिए सही बोली निर्धारित कर सकता है, लेकिन ऐसा करने के लिए, इसे डेटाबेस से लाइव कनेक्शन की आवश्यकता होती है।


2
मेरी समस्या इसके समान थी pg_hba.conf सर्वर पर दूरस्थ कनेक्शन के लिए कॉन्फ़िगर नहीं किया गया था, जिसने मुझे यह त्रुटि दी।
ब्रायन

8
यदि आप जिस डेटाबेस से जुड़ने की कोशिश कर रहे हैं, वह मौजूद नहीं है, तो आप यह त्रुटि भी देख सकते हैं।
जोनास पेडरसन

12
एक ही समस्या है, मेरे मामले में DB था, लेकिन क्रेडेंशियल्स गलत थे। +1
फ़ेडरिको पियाज़ा

आश्चर्यजनक रूप से मुझे यह समस्या तब शुरू हुई जब hbm2ddl.auto = स्कीमा की उम्मीद से गिरा स्कीमा db और टेबल बनाएगा। हालाँकि यह विफल रहा। लेकिन जब मैंने खाली स्कीमा बनाया hbm2ddl ने टेबल बनाने का काम किया
सौरभ

डेटाबेस मशीन का आईपी बदल दिया गया है लेकिन एक डीएनएस पुराने को हल कर रहा था :-(
इलिडन

24

Application.properties spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialectफ़ाइल में जोड़ें


यह एक महान जवाब है - मुझे अपने डेटाबेस वर्ग के लिए एक मॉकबीन का उपयोग करने की अनुमति देता है और मेरी संपत्तियों की प्रोफाइल में वास्तविक कनेक्शन की जानकारी नहीं है
टेलर

स्प्रिंग.jpa.properties.hibernate.dialect को अनुप्रयोग में जोड़ना। धन्यवाद)
Maks

22

मुझे यह त्रुटि तब हुई जब मेरा डेटाबेस नहीं बना था। मैन्युअल रूप से DB बनाने के बाद, इसने ठीक काम किया।


1
आम तौर पर आप "spring.jpa.hibernate.ddl-auto = create" का उपयोग करके मैन्युअल निर्माण से बच सकते हैं
आंद्रेई

@Andrei - मैं कैसे / कहाँ निर्दिष्ट करूँगा "spring.jpa.hibernate.ddl-auto = create"?
एलेक्स वर्डेन

2
@AlexWorden, आंद्रेई का मतलब है कि आप इसे स्प्रिंग में बूट कर सकते हैं। Xml आधारित स्प्रिंग कॉन्फ़िगरेशन के लिए बराबर होना चाहिए।
ACV

क्या यह त्रुटि केवल तब दिखाई देती है जब डेटाबेस मौजूद नहीं होता है या तब भी होता है जब डेटाबेस के अंदर मौजूद टेबल मौजूद नहीं होते हैं?
जिग्मेंटस

1
मैंने गलत पासवर्ड दिया था और मैं उसी त्रुटि का सामना कर रहा था। शुक्रिया एसीवी, आपने मेरी बहुत मदद की।
संटू

17

मुझे भी इसी तरह के मुद्दे का सामना करना पड़ा। लेकिन, यह अवैध पासवर्ड प्रदान करने के कारण था। इसके अलावा, मैं कहना चाहूंगा कि आपका कोड वसंत का उपयोग करके पुरानी शैली का कोड प्रतीत होता है। आपने पहले ही उल्लेख किया है कि आप स्प्रिंग बूट का उपयोग कर रहे हैं, जिसका अर्थ है कि अधिकांश चीजें आपके लिए ऑटो कॉन्फ़िगर होंगी। हाइबरनेट बोली, ऑटो को चयनित किया जाएगा जो डीबी ड्राइवर के आधार पर मान्य क्रेडेंशियल के साथ उपलब्ध है, जिसका उपयोग कनेक्शन को ठीक से परखने के लिए किया जा सकता है। यदि कनेक्शन के साथ कोई समस्या है तो आप फिर से उसी त्रुटि का सामना करेंगे। केवल 3 गुण application.properties में आवश्यक

# Replace with your connection string
spring.datasource.url=jdbc:mysql://localhost:3306/pdb1

# Replace with your credentials
spring.datasource.username=root
spring.datasource.password=

8

मैं उसी समस्या में भाग गया और मेरा मुद्दा यह था कि मैं जिस DB से जुड़ने की कोशिश कर रहा था, वह मौजूद नहीं थी।

मैंने DB बनाया, URL / कनेक्शन स्ट्रिंग और रीरन को सत्यापित किया और सब कुछ अपेक्षित रूप से काम किया।


धन्यवाद टिप्पणी ने मुझे कनेक्शन पोर्ट की जांच करने के लिए प्रेरित किया, जो गलत था
फ़ेरस

4

यह इसलिए हो रहा है क्योंकि डेटाबेस को जोड़ने के लिए आपका कोड बेल नहीं है। सुनिश्चित करें कि आपके पास mysql ड्राइवर और उपयोगकर्ता नाम, पासवर्ड सही है।


4

सुनिश्चित करें कि आपके application.propertiesसभी सही जानकारी है: (मैं अपने db बंदरगाह से बदल 8889करने के लिए 3306यह काम किया)

 db.url: jdbc:mysql://localhost:3306/test

4

Jpa java config के लिए स्प्रिंग बूट में आपको JpaBaseConfiguration को विस्तारित करने और इसे अमूर्त विधियों को लागू करने की आवश्यकता है।

@Configuration
public class JpaConfig extends JpaBaseConfiguration {

    @Override
    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
        final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        return vendorAdapter;
    }

    @Override
    protected Map<String, Object> getVendorProperties() {
        Map<String, Object> properties = new HashMap<>();
        properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
    }

}

कुछ मामलों में application.properties गुणों में बदलाव नहीं देख सकते हैं। और मैंने ऊपर की तरह properties.put को जोड़ दिया और उत्तर के लिए ठीक काम किया।
फतह यावुज़

4

अनावश्यक हाइबरनेट कॉन्फ़िगरेशन निकालें

यदि आप स्प्रिंग बूट का उपयोग कर रहे हैं, तो आपको स्पष्ट रूप से जेपीए और हाइबरनेट कॉन्फ़िगरेशन प्रदान करने की आवश्यकता नहीं है, क्योंकि स्प्रिंग बूट आपके लिए ऐसा कर सकता है।

डेटाबेस कॉन्फ़िगरेशन गुण जोड़ें

में application.propertiesवसंत बूट विन्यास फाइल, आप अपने डेटाबेस विन्यास गुण जोड़ने के लिए:

spring.datasource.driverClassName = "org.postgresql.Driver
spring.datasource.url = jdbc:postgresql://localhost:5432/teste?charSet=LATIN1
spring.datasource.username = klebermo
spring.datasource.password = 123

हाइबरनेट विशिष्ट गुण जोड़ें

और, उसी application.propertiesकॉन्फ़िगरेशन फ़ाइल में, आप कस्टम हाइबरनेट गुण भी सेट कर सकते हैं:

# Log SQL statements
spring.jpa.show-sql = false

# Hibernate ddl auto for generating the database schema
spring.jpa.hibernate.ddl-auto = create

# Hibernate database Dialect
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

बस!


स्प्रिंग.jpa.properties.hibernate.dialect को अनुप्रयोग में जोड़ना। धन्यवाद)
Maks

3

मेरा भी यही मुद्दा था। इस एप्लिकेशन को जोड़ने से। समस्याएँ हल हो गईं:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

स्प्रिंग.jpa.properties.hibernate.dialect को अनुप्रयोग में जोड़ना। धन्यवाद)
Maks

2

मेरे मामले में उपयोगकर्ता डेटाबेस से कनेक्ट नहीं कर सका। यदि लॉग अपवाद के ठीक पहले चेतावनी होती है तो समान समस्या होगी:

WARN HHH000342: Could not obtain connection to query metadata : Login failed for user 'my_user'.

2

सुनिश्चित करें कि आप अपने डेटाबेस में अपने पोम की तरह ओपी किया था। यही मेरी समस्या थी।


क्या आप आगे बता सकते हैं? इस जवाब से आपका क्या मतलब है?
तुनाकी

मुझे सिर्फ mysql निर्भरता जोड़ने की जरूरत थी।
obesechicken13

2

मेरी समस्या यह थी कि एम्बेडेड डेटाबेस पहले से जुड़ा हुआ था। निकट संबंध


1
मैं पुष्टि कर सकता हूं कि किसी प्रकार की हाइबरनेट समस्या है जो इस त्रुटि की रिपोर्ट करती है जब यह कनेक्ट करने में विफल रहती है। मैं नेटवर्क पर और बंद होने वाली समस्या को पुन: उत्पन्न कर सकता हूं।
बोरबज़

2

मुझे यह मुद्दा तब मिला जब ग्रहण जेडीबीसी चालक को खोजने में असमर्थ था। इस काम को पाने के लिए ग्रहण से रिफ्रेश रिफ्रेश करना था।


2

hibernate.dialectसेट नहीं किए गए समस्या के कारणों में से कुछ निम्नलिखित हैं । इन अपवादों में से अधिकांश स्टार्टअप लॉग में दिखाए गए हैं जो अंत में उल्लेखित मुद्दे के बाद हैं।

उदाहरण: Postgres DB के साथ स्प्रिंग बूट ऐप में

1. जांचें कि क्या डेटाबेस वास्तव में स्थापित है और इसका सर्वर शुरू हो गया है।

  • org.postgresql.util.PSQLException: स्थानीयहोस्ट से कनेक्शन: 5432 ने इनकार कर दिया। जांचें कि होस्टनाम और पोर्ट सही हैं और पोस्टमास्टर टीसीपी / आईपी कनेक्शन स्वीकार कर रहा है।
  • java.net.ConnectException: कनेक्शन ने इनकार कर दिया: कनेक्ट करें
  • org.hibernate.service.spi.ServiceException: अनुरोधित सेवा बनाने में असमर्थ [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

2. जाँच करें कि क्या डेटाबेस का नाम सही उल्लेखित है।

  • org.postgresql.util.PSQLException: FATAL: डेटाबेस "फू" मौजूद नहीं है

    में application.propertiesफ़ाइल,

    spring.datasource.url = jdbc:postgresql://localhost:5432/foo

    लेकिन fooअस्तित्व में नहीं था। इसलिए मैंने पोस्टग्रेज के लिए pgAdmin से डेटाबेस बनाया

    CREATE DATABASE foo;

3. जांचें कि होस्ट नाम और सर्वर पोर्ट सुलभ है या नहीं।

  • org.postgresql.util.PSQLException: स्थानीयहोस्ट से कनेक्शन: 5431 ने इनकार कर दिया। जांचें कि होस्टनाम और पोर्ट सही हैं और पोस्टमास्टर टीसीपी / आईपी कनेक्शन स्वीकार कर रहा है।
  • java.net.ConnectException: कनेक्शन ने इनकार कर दिया: कनेक्ट करें

4. जांचें कि क्या डेटाबेस क्रेडेंशियल सही हैं।

  • जैसा कि @ पंकज ने उल्लेख किया है
  • org.postgresql.util.PSQLException: FATAL: पासवर्ड प्रमाणीकरण उपयोगकर्ता के लिए विफल रहा "उपयोगकर्ता"

    spring.datasource.username= {DB USERNAME HERE}

    spring.datasource.password= {DB PASSWORD HERE}


1

यदि आप इस लाइन का उपयोग कर रहे हैं:

sessionFactory.getHibernateProperties().put("hibernate.dialect", env.getProperty("hibernate.dialect"));

सुनिश्चित करें कि env.getProperty("hibernate.dialect")यह अशक्त नहीं है।


1

एक ही लेकिन एक JBoss WildFly के रूप में

मेरे में गुणों के साथ हल META-INF/persistence.xml

<properties>
            <property name="hibernate.transaction.jta.platform"
                value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
            <property name="spring.jpa.database-platform" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="spring.jpa.show-sql" value="false" />
</properties>

1

AWS MySQL RDS के साथ काम करने वालों के लिए, यह तब हो सकता है जब आप डेटाबेस से कनेक्ट करने में असमर्थ होते हैं। MySQL RDS के लिए सेटिंग AWS सुरक्षा समूह पर जाएं और MyIP को रीफ़्रेश करके इनबाउंड IP नियम संपादित करें।

मैंने इस मुद्दे का सामना किया और ऊपर करने से मेरे लिए समस्या ठीक हो गई।


मैंने आरडीएस ऑरोरा MySQL के सुरक्षा समूह को सभी ट्रैफ़िक की अनुमति दी, इसने मेरे लिए चाल चली। यदि आप अधिक विशिष्ट होना चाहते हैं या उत्पादों के लिए, केवल अनुमति दिए गए ips जोड़ें
AleksandarT

1

मुझे भी यह समस्या थी। मेरे मामले में यह MySQL उपयोगकर्ता को कोई अनुदान नहीं दिए जाने के कारण था। MySQL उपयोगकर्ता को अनुदान देना जो मेरे ऐप का उपयोग करता है ने इस मुद्दे को हल किया:

grant select, insert, delete, update on my_db.* to 'my_user'@'%';

1

मेरे पास एक ही मुद्दा था और डिबगिंग के बाद यह पता चला कि स्प्रिंग एप्लिकेशन.प्रॉपर्टी के पास डीबी सर्वर के लिए गलत आईपी एड्रेस था

spring.datasource.url=jdbc:oracle:thin:@WRONG:1521/DEV

1

मैंने निम्नलिखित तीन मामलों में इस त्रुटि संदेश को पुन: प्रस्तुत किया:

  • अनुप्रयोग नाम में उपयोगकर्ता नाम के साथ डेटाबेस उपयोगकर्ता मौजूद नहीं है। फाइल या हठ। फ़ाइल में या, आपके मामले में, हाइबरनेटकॉन्फ़िग फ़ाइल में
  • परिनियोजित डेटाबेस में वह उपयोगकर्ता होता है लेकिन उपर्युक्त फ़ाइलों में से उपयोगकर्ता को अलग-अलग पासवर्ड से पहचाना जाता है
  • डेटाबेस में उस उपयोगकर्ता और पासवर्ड का मिलान होता है, लेकिन उस उपयोगकर्ता के पास उन सभी डेटाबेस कार्यों को पूरा करने के लिए आवश्यक सभी विशेषाधिकार नहीं होते हैं, जो आपका स्प्रिंग-बूट ऐप करता है

स्पष्ट समाधान एक ही उपयोगकर्ता नाम और पासवर्ड को स्प्रिंग-बूट ऐप के रूप में बनाना है या किसी मौजूदा डेटाबेस उपयोगकर्ता से मेल खाने के लिए अपने स्प्रिंग-बूट ऐप फ़ाइलों में उपयोगकर्ता नाम और पासवर्ड बदलना है और उस डेटाबेस उपयोगकर्ता को पर्याप्त विशेषाधिकार प्रदान करना है। MySQL डेटाबेस के मामले में यह नीचे दिखाए अनुसार किया जा सकता है:

mysql -u root -p 
>CREATE USER 'theuser'@'localhost' IDENTIFIED BY 'thepassword';
>GRANT ALL ON *.* to theuser@localhost IDENTIFIED BY 'thepassword';
>FLUSH PRIVILEGES;

जाहिर है कि Postgresql में इसी तरह के कमांड हैं, लेकिन मैंने यह परीक्षण नहीं किया है कि क्या Postgresql के मामले में यह त्रुटि संदेश इन तीन मामलों में पुन: प्रस्तुत किया जा सकता है।


0

मेरे पास एक ही मुद्दा था और यह डेटाबेस के उदाहरण से जुड़ने में असमर्थ होने के कारण था। उस त्रुटि के ऊपर लॉग में हाइबरनेट त्रुटि HHH000342 की तलाश करें, यह आपको एक विचार देना चाहिए कि डीबी कनेक्शन कहां विफल हो रहा है (गलत उपयोगकर्ता नाम / पास, यूआरएल, आदि)


0

यह मेरे साथ हुआ क्योंकि मैंने conf.configure();सत्र की शुरुआत से पहले नहीं जोड़ा था :

Configuration conf = new Configuration();
conf.configure();

0

सुनिश्चित करें कि आपने application.properties में मान्य विवरण दर्ज किया है और क्या आपका डेटाबेस सर्वर उपलब्ध है। एक उदाहरण के रूप में जब आप MySQL से कनेक्ट कर रहे हैं कि क्या XAMPP ठीक से चल रहा है।


0

मुझे उसी मुद्दे का सामना करना पड़ा: मैं जिस db को जोड़ने की कोशिश कर रहा था, वह मौजूद नहीं था। मैंने उपयोग किया jpa.database=default(जो मुझे लगता है कि इसका मतलब है कि यह डेटाबेस से जुड़ने की कोशिश करेगा और फिर बोली का चयन करेगा)। एक बार जब मैंने डेटाबेस शुरू किया, तो उसने बिना किसी बदलाव के ठीक काम किया।


0

मुझे इस मुद्दे का सामना करना पड़ा, क्योंकि मेरास्सेल 8.0.11 संस्करण वापस आ गया था, जो कि मेरे लिए 5.7 को वापस लाया गया था


0

हाइबरनेट कोड जनरेशन का उपयोग करने के बाद मुझे वही त्रुटि मिली

https://www.mkyong.com/hibernate/how-to-generate-code-with-hibernate-tools/

तब hibernate.cfg.xmlइसे बनाया गया था /src/main/java लेकिन इसे हटाने के बाद कनेक्शन मापदंडों के बिना - मेरी समस्या हल हो गई थी


0

यदि लॉग में पूर्ववर्ती त्रुटि यह थी: "ERROR - HikariPool-1 - jdbcUrl को DriverClassName के साथ आवश्यक है" तो इसका समाधान "url" को "jdbc-url" के अनुसार फिर से लिखना है: अनुप्रयोगों से स्प्रिंग बूट के लिए डेटाबेस application.yml। ।गुण


0

मेरे पास एक ही त्रुटि थी,

 Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

मेरे मामले में WAR के पास application.properties था जो विकास सर्वर
को इंगित करता था जहां बाहरी application.properties सही DB सर्वर की ओर इशारा कर रहा था।

सुनिश्चित करें कि आपके पास classpath / jars में कोई अन्य application.properties नहीं है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.