org.hibernate.HibernateException: 'হাইবারনেট.ডায়ালেক্ট' সেট না করা হলে ডায়ালেক্টর রেজোলিউশনইনফোর অ্যাক্সেসটি বাতিল হতে পারে না


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আপনার ক্লাসপথে একটি রয়েছে তা নিশ্চিত করুন এবং নিম্নলিখিত বৈশিষ্ট্যগুলি যুক্ত করুন।

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এবং এটি মূলত একই ডেটাসোর্সের জন্য হয় তবে আপনি নিম্নলিখিতটি করতে পারেন (যা এখানে জাএমকনফিগ নয়, এক্সএমএলের জন্যও নথিভুক্ত করা হয়েছে )।

@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নির্ভরতা অপসারণের পরামর্শ দেব কারণ এটি স্প্রিং বুটকে দ্রুত এবং আরও দৃust় HikariCPবাস্তবায়ন কনফিগার করার অনুমতি দেয় ।


1
কিন্তু এই ফাইলটি তৈরি এড়াতে কোনও উপায় আছে application.propertes? আমি একটি উপায় পছন্দ করি যেখানে আমি হাইবারনেটকনফিগ ক্লাসে সমস্ত কনফিগারেশন করি।
ক্লেবার মোটা

2
কেন? স্প্রিং বুটের পুরো উদ্দেশ্যটি হ'ল এটি আপনার জন্য অটো কনফিগারেশন করে ... তাই আপনি কোনও বৈশিষ্ট্য ফাইলে 7 টি লাইনের উপরে একটি ভার্বোস জাভা কনফিগারেশন অন্তর্ভুক্ত করতে পছন্দ করেন ?!
এম। ডিনুম

2
এটি কোনও সম্পত্তি ফাইলের 6 লাইনও হতে পারে। আপনি পোষ্টগ্র্যাস ব্যবহার করছেন এমন সময় বসন্ত.ডাটাসোর্স.আরল থেকে অনুগ্রহ করে আপনার বসন্ত.ডাটাসোর্স.ড্রাইভারক্লাসনাম সেট করার দরকার নেই।
অ্যান্ডি উইলকিনসন

2
@ অ্যালেক্স ওয়ার্ডেন না এটি নয় ... এলোমেলো মন্তব্য করার পরিবর্তে আপনি প্রথমে পড়তে চান বিশেষত স্প্রিং বুটের সমর্থনটি কীভাবে লোড করা হয়। আপনি যদি ফাইলের অধিকারগুলি সোজাভাবে সেট করেন তবে ডিস্কের পাসওয়ার্ডগুলিতে কোনও সমস্যা হওয়ার দরকার নেই। তাদের একটি ডেটাবেজে রাখা আরও ভাল নয় ...
এম। ডিনুম

4
পরিবর্তে 3 টি টীকাগুলি যেমন কনফিগারেশন, সক্ষমআউটো কনফিগারেশন, কম্পোনেন্টসস্ক্যান ব্যবহার করুন। আমরা স্প্রিংবুট অ্যাপ্লিকেশন টীকাটি ব্যবহার করতে পারি
পঙ্কজ

158

ডেটাবেস সার্ভার ডাউন করার সাথে অ্যাপ্লিকেশন (স্প্রিং বুট ব্যবহার করে) শুরু করার সময় আমি একই ধরণের সমস্যার মুখোমুখি হয়েছি ।

হাইবারনেট স্বয়ংক্রিয়ভাবে ব্যবহারের জন্য সঠিক উপভাষা নির্ধারণ করতে পারে তবে এটি করার জন্য এটি ডাটাবেসের সাথে একটি সরাসরি সংযোগ প্রয়োজন needs


2
আমার সমস্যাটি এর সাথে অনুরূপ ছিল যে সার্ভারে থাকা pg_hba.conf দূরবর্তী সংযোগের জন্য কনফিগার করা হয়নি, যা আমাকে এই ত্রুটি দিয়েছে gave
ব্রায়ান

8
আপনি যে সংখ্যার সাথে সংযোগের চেষ্টা করছেন এটি উপস্থিত না থাকলে আপনিও এই ত্রুটিটি দেখতে পাবেন।
জোনাস পেদারসেন

12
একই সমস্যাটি পেয়েছেন, আমার ক্ষেত্রে ডিবি উঠেছিল তবে শংসাপত্রগুলি ভুল ছিল। +1
ফেডেরিকো পিয়াজা

এইচবিএম 2 ডিডিএল.আউটো = সত্যটি ডিবি এবং সারণী তৈরি করবে এমন প্রত্যাশা করে স্কিমা বাদ দিলে আশ্চর্যজনকভাবে আমি এই সমস্যাটি পেতে শুরু করি। তবে এটি ব্যর্থ হয়েছে। তবে আমি খালি স্কিমা তৈরি করেছি hbm2ddl টেবিল তৈরির কাজ করেছে
সৌরভ

ডাটাবেস মেশিনের আইপি পরিবর্তন করা হয়েছে তবে একটি ডিএনএস
পুরানোটির সাথে

24

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialectএপ্লিকেশন.প্রেটিস ফাইল যুক্ত করুন


এটি একটি দুর্দান্ত উত্তর - আমাকে আমার ডেটাবেস ক্লাসের জন্য মকবিয়ান ব্যবহার করার অনুমতি দেয় এবং আমার প্রোপার্টি প্রোফাইলে আসল সংযোগের তথ্য না রাখায়
টেলর

অ্যাপ্লিকেশনটিতে স্প্রিং.জেপা.পোপারটিস.হাইবারনেট.ডায়াল্ট যুক্ত করা হয়েছে rop আপনাকে ধন্যবাদ)
মাকস 16

22

আমার ডাটাবেসটি তৈরি না হলে আমি এই ত্রুটিটি পেয়েছি। ম্যানুয়ালি ডিবি তৈরির পরে, এটি দুর্দান্ত কাজ করেছে।


1
সাধারণত আপনি "বসন্ত.jpa.hibernate.ddl-auto = create" ব্যবহার করে ম্যানুয়াল তৈরি এড়াতে পারবেন
আন্ড্রেই

@ আন্ড্রেই - কীভাবে / কোথায় আমি "বসন্ত.jpa.hibernate.ddl-auto = create" নির্দিষ্ট করব?
অ্যালেক্স ওয়ার্ডেন

2
অ্যালেক্স ওয়ার্ডেন, আন্ড্রেই এর অর্থ হ'ল এটি যদি স্প্রিং বুট হয় তবে আপনি এটি প্রয়োগ করতে পারেন rop এক্সএমএল ভিত্তিক স্প্রিং কনফিগারেশনের সমতুল্য থাকতে হবে।
ACV

এই ত্রুটিটি কি কেবল তখনই উপস্থিত হয় যখন ডাটাবেসটির অস্তিত্ব থাকে না বা যখন ডাটাবেসের অভ্যন্তরে সারণী উপস্থিত না থাকে?
zygimantus

1
আমি ভুল পাসওয়ার্ড দিয়েছি এবং আমিও একই ত্রুটির মুখোমুখি হয়েছি। ধন্যবাদ এসিভি, আপনি আমাকে অনেক সাহায্য করেছেন।
সন্তু

17

আমিও একই রকম সমস্যার মুখোমুখি হয়েছি। তবে, এটি অবৈধ পাসওয়ার্ড সরবরাহের কারণে হয়েছিল। এছাড়াও, আমি বলতে চাই যে আপনার কোডটি বসন্ত ব্যবহার করে পুরানো স্টাইলের কোড বলে মনে হচ্ছে। আপনি ইতিমধ্যে উল্লেখ করেছেন যে আপনি বসন্ত বুট ব্যবহার করছেন, যার অর্থ বেশিরভাগ জিনিস আপনার জন্য স্বয়ংক্রিয়ভাবে কনফিগার করা হবে। হাইবারনেট ডায়ালেক্টটি ক্লাসপথে উপলব্ধ ডিবি ড্রাইভারের সাথে বৈধ শংসাপত্রগুলির ভিত্তিতে স্বয়ংক্রিয়ভাবে নির্বাচিত হবে যা সংযোগটি সঠিকভাবে পরীক্ষা করতে ব্যবহার করা যেতে পারে। সংযোগটিতে কোনও সমস্যা থাকলে আপনি আবার একই ত্রুটির মুখোমুখি হবেন। অ্যাপ্লিকেশন.প্রপার্টিগুলিতে কেবলমাত্র 3 টি সম্পত্তি দরকার

# 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

আমি একই সমস্যায় পড়েছি এবং আমার সমস্যাটি হ'ল আমি যে ডিবিতে সংযোগ দেওয়ার চেষ্টা করছিলাম সেটির অস্তিত্ব ছিল না।

আমি ডিবি তৈরি করেছি, ইউআরএল / সংযোগের স্ট্রিং যাচাই করেছি এবং পুনরায় পুনরায় যা কিছু প্রত্যাশা অনুযায়ী কাজ করেছে।


আপনাকে ধন্যবাদ ধন্যবাদ আমাকে সংযোগ পোর্টটি যা সঠিক ছিল তা যাচাই করতে পরিচালিত করেছে
ফেরাস

4

এটি ঘটছে কারণ আপনার কোডটি ডেটাবেস সংযোগ করতে মেশেনি। আপনার মাইএসকিএল ড্রাইভার এবং ব্যবহারকারীর নাম, পাসওয়ার্ড সঠিক আছে তা নিশ্চিত করুন।


4

নিশ্চিত করুন আপনার application.propertiesসমস্ত সঠিক তথ্য জানিয়েছেন: (আমি আমার ডিবি বন্দর থেকে পরিবর্তিত 8889করা 3306এটা কাজ করে)

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

4

জেপি জাভা কনফিগারেশনের জন্য স্প্রিং বুটে আপনাকে জেপাবেস কনফিগারেশন প্রসারিত করতে হবে এবং এর বিমূর্ত পদ্ধতি প্রয়োগ করতে হবে।

@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");
    }

}

কিছু ক্ষেত্রে অ্যাপ্লিকেশন.প্রাপ্তি বৈশিষ্ট্যগুলির পরিবর্তনগুলি দেখতে পারে না nd এবং আমি উপরের মতো বৈশিষ্ট্যগুলি যোগ করি 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

এটাই!


অ্যাপ্লিকেশনটিতে স্প্রিং.জেপা.পোপারটিস.হাইবারনেট.ডায়াল্ট যুক্ত করা হয়েছে rop আপনাকে ধন্যবাদ)
মাকস 16

3

আমার একই সমস্যা ছিল। এটি প্রয়োগে যুক্ত করুন p

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

অ্যাপ্লিকেশনটিতে স্প্রিং.জেপা.পোপারটিস.হাইবারনেট.ডায়াল্ট যুক্ত করা হয়েছে rop আপনাকে ধন্যবাদ)
মাকস 16

2

আমার ক্ষেত্রে ব্যবহারকারী ডাটাবেসের সাথে সংযোগ করতে পারেনি। লগটিতে ব্যতিক্রমের ঠিক আগে সতর্কতা থাকলে যদি একই সমস্যা থাকে:

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

2

ওএম এর মতো আপনার পোমে আপনার ডাটাবেস রয়েছে কিনা তা নিশ্চিত করুন। আমার সমস্যা ছিল।


আপনি আরও বিস্তারিত বলতে পারেন? এই উত্তরটির অর্থ কী?
তুনাকি

আমার কেবল মাইএসকিএল নির্ভরতা যুক্ত করা দরকার।
23

2

আমার সমস্যাটি ছিল এম্বেড করা ডাটাবেস ইতিমধ্যে সংযুক্ত ছিল। সংযোগ


1
আমি নিশ্চিত করতে পারি যে এখানে কিছু ধরণের হাইবারনেট সমস্যা রয়েছে যা সংযোগ করতে ব্যর্থ হলে এই ত্রুটিটি রিপোর্ট করে। আমি নেটওয়ার্কটি চালু এবং বন্ধ করে দিয়ে সমস্যার পুনরুত্পাদন করতে পারি।
বোরজ্ব

2

যখন এইলিপস জেডিবিসি ড্রাইভারকে খুঁজে পেতে অক্ষম হয়েছিল তখন আমি এই সমস্যাটি পেয়েছি। এই কাজটি পেতে গ্রহন থেকে একটি গ্রেড রিফ্রেশ করতে হয়েছিল।


2

নীচে hibernate.dialectসেট না হওয়া ইস্যুটির কয়েকটি কারণ রয়েছে । এই ব্যতিক্রমগুলির বেশিরভাগই সূচনা লগে প্রদর্শিত হয় যা শেষ পর্যন্ত উল্লিখিত সমস্যাটির পরে অনুসরণ করা হয়।

উদাহরণ: পোস্টগ্রিস ডিবি সহ স্প্রিং বুট অ্যাপে

১. ডাটাবেসটি আসলে ইনস্টল করা আছে এবং এর সার্ভারটি চালু হয়েছে কিনা তা পরীক্ষা করে দেখুন।

  • org.postgresql.util.PSQLException: লোকালহোস্টের সংযোগ: 5432 প্রত্যাখ্যান হয়েছে। হোস্টনাম এবং পোর্ট সঠিক এবং পোস্টমাস্টার টিসিপি / আইপি সংযোগগুলি গ্রহণ করছে তা পরীক্ষা করে দেখুন।
  • java.net.ConnectException: সংযোগ প্রত্যাখ্যান: সংযুক্ত
  • org.hibernate.service.spi.ServiceException: অনুরোধ করা পরিষেবা তৈরি করতে অক্ষম

২. ডাটাবেসের নামটি সঠিকভাবে উল্লেখ করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।

  • org.postgresql.util.PSQLException: FATAL: "foo" ডাটাবেসটি নেই

    ইন application.propertiesফাইল,

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

    কিন্তু fooউপস্থিত ছিল না। সুতরাং আমি পোস্টগ্রিজের জন্য পিজএডমিন থেকে ডাটাবেস তৈরি করেছি

    CREATE DATABASE foo;

3. হোস্টের নাম এবং সার্ভার পোর্ট অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করে দেখুন।

  • org.postgresql.util.PSQLException: লোকালহোস্টের সংযোগ: 5431 প্রত্যাখ্যান হয়েছে। হোস্টনাম এবং পোর্ট সঠিক এবং পোস্টমাস্টার টিসিপি / আইপি সংযোগগুলি গ্রহণ করছে তা পরীক্ষা করে দেখুন।
  • java.net.ConnectException: সংযোগ প্রত্যাখ্যান: সংযুক্ত

৪. ডাটাবেস শংসাপত্রগুলি সঠিক কিনা তা পরীক্ষা করে দেখুন।

  • @ পঙ্কজ যেমন উল্লেখ করেছেন
  • org.postgresql.util.PSQLException: FATAL: "postgres" ব্যবহারকারীর জন্য পাসওয়ার্ড প্রমাণীকরণ ব্যর্থ হয়েছে

    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

একই তবে জেবিস ওয়াইল্ডফ্লাই এএস এ

আমার মধ্যে সম্পত্তি সঙ্গে সমাধান 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

এডাব্লুএস মাইএসকিউএল আরডিএস সহ যারা কাজ করছেন তাদের ক্ষেত্রে, আপনি যখন ডাটাবেসের সাথে সংযোগ রাখতে অক্ষম হন তখন এটি হতে পারে। মাইএসকিউএল আরডিএস-এর জন্য অ্যাডাব্লুএস সুরক্ষা গোষ্ঠীগুলিতে যান এবং মাইআইপি রিফ্রেশ করে ইনবাউন্ড আইপি নিয়ম সম্পাদনা করুন।

আমি এই সমস্যার মুখোমুখি হয়েছি এবং উপরে কাজটি করা আমার জন্য সমস্যাটি স্থির করে দিয়েছে।


আমি আরডিএস অরোরা মাইএসকিউএল এর সুরক্ষা গোষ্ঠীতে সমস্ত ট্র্যাফিকের অনুমতি দিয়েছিলাম, এটি আমার পক্ষে কৌশলটি করেছে। আপনি যদি আরও সুনির্দিষ্ট বা প্রোড এনভিভি হতে চান তবে কেবল অনুমোদিত আইপস যুক্ত করুন
আলেকসান্ডার্ট

1

আমারও এই সমস্যা ছিল আমার ক্ষেত্রে এটি মাইএসকিউএল ব্যবহারকারীকে কোনও অনুদান দেওয়া হয়নি বলেই হয়েছিল। আমার অ্যাপ্লিকেশন ব্যবহার করে যা মাইএসকিউএল ব্যবহারকারীকে অনুদান দেওয়ার বিষয়টি সমস্যার সমাধান করেছে:

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

1

আমার একই সমস্যা ছিল এবং ডিবাগিংয়ের পরে এটি সক্রিয় হয় যে স্প্রিং অ্যাপ্লিকেশন.প্রপার্টিগুলির ডিবি সার্ভারের জন্য ভুল আইপি ঠিকানা ছিল

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

1

আমি নিম্নলিখিত তিনটি ক্ষেত্রে এই ত্রুটি বার্তাটি পুনরুত্পাদন করেছি:

  • অ্যাপ্লিকেশন.প্রপ্রেটিস ফাইল বা দৃistence়তা.প্রোপার্টি ফাইল বা আপনার ক্ষেত্রে যেমন হাইবারনেট কনফিগ ফাইলে লিখিত ব্যবহারকারীর নাম সহ ডাটাবেস ব্যবহারকারীর উপস্থিতি নেই
  • মোতায়েন করা ডাটাবেসে সেই ব্যবহারকারী রয়েছে তবে ব্যবহারকারী উপরের ফাইলগুলির চেয়ে পৃথক পাসওয়ার্ড দ্বারা চিহ্নিত করা হয়েছে password
  • ডাটাবেসটিতে সেই ব্যবহারকারীর এবং পাসওয়ার্ডগুলির মিল রয়েছে তবে আপনার স্প্রিং-বুট অ্যাপ্লিকেশনটি যে ডাটাবেসের কাজগুলি সম্পাদন করে তার জন্য সমস্ত সুযোগ-সুবিধার প্রয়োজন নেই

স্পষ্ট সমাধানটি হ'ল বসন্ত-বুট অ্যাপ্লিকেশনটির মতো একই ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ নতুন ডাটাবেস ব্যবহারকারী তৈরি করা বা কোনও বিদ্যমান ডাটাবেস ব্যবহারকারীর সাথে মেলে আপনার বসন্ত-বুট অ্যাপ্লিকেশন ফাইলগুলিতে ব্যবহারকারীর নাম এবং পাসওয়ার্ড পরিবর্তন করা এবং সেই ডাটাবেস ব্যবহারকারীকে পর্যাপ্ত সুযোগ সুবিধা প্রদান করা। মাইএসকিউএল ডাটাবেসের ক্ষেত্রে এটি নীচের প্রদর্শিত হিসাবে করা যেতে পারে:

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

স্পষ্টতই পোস্টগ্র্যাস্কল-এ একই কমান্ড রয়েছে তবে পোস্টগ্রেস্কেলের ক্ষেত্রে যদি এই ত্রুটি বার্তাটি এই তিনটি ক্ষেত্রে পুনরুত্পাদন করা যায় তবে আমি পরীক্ষা করিনি।


0

আমার একই সমস্যা ছিল এবং এটি ডেটাবেস উদাহরণের সাথে সংযোগ করতে অক্ষম হওয়ার কারণে হয়েছিল was সেই ত্রুটির উপরের লগটিতে হাইবারনেট ত্রুটি HHH000342 সন্ধান করুন, এটি আপনাকে ডিবি সংযোগ কোথায় ব্যর্থ হচ্ছে (ভুল ব্যবহারকারী নাম / পাস, url, ইত্যাদি) সম্পর্কে ধারণা দেওয়া উচিত


0

আমার সাথে এটি ঘটেছিল কারণ conf.configure();অধিবেশন শুরুর আগে আমি যুক্ত করেছিলাম না :

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

0

নিশ্চিত হয়ে নিন যে আপনি অ্যাপ্লিকেশন.সম্পত্তিগুলিতে বৈধ বিশদ লিখেছেন এবং আপনার ডাটাবেস সার্ভার উপলব্ধ কিনা। উদাহরণ হিসাবে আপনি যখন মাইএসকিউএলের সাথে সংযোগ করছেন তখন এক্সএএমপিপি সঠিকভাবে চলছে কিনা তা পরীক্ষা করে দেখুন ।


0

আমি একই সমস্যার মুখোমুখি হয়েছি: আমি যে সংযোগের সাথে সংযোগ দেওয়ার চেষ্টা করছিলাম সেটির অস্তিত্ব নেই। আমি ব্যবহার করেছি jpa.database=default(যার অর্থ আমি এটি ডাটাবেসের সাথে সংযোগ করার চেষ্টা করব এবং তারপরে স্বতন্ত্র উপভাষাটি নির্বাচন করব) used একবার আমি ডাটাবেস শুরু করেছি, কোনও পরিবর্তন ছাড়াই এটি দুর্দান্ত কাজ করেছে।


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 - jdbcUll ড্রাইভারক্লাসনামের সাথে প্রয়োজন" তবে সমাধানটি "url" "jdbc-url" এ পুনরায় লিখতে হবে: অ্যাপ্লিকেশনগুলি থেকে স্প্রিং বুটের জন্য ডাটাবেস অ্যাপ্লিকেশন.আইএমএল .properties


0

আমার একই ত্রুটি ছিল,

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

আমার ক্ষেত্রে ওয়ারের
অ্যাপ্লিকেশন ছিল p

ক্লাসপথ / জারে অন্য কোনও অ্যাপ্লিকেশন.প্রপার্টি নেই তা নিশ্চিত করুন ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.