PostgreSQL-Нет подходящего драйвера для JDBC [дубликат]

# Генерация целых чисел

def gen_prime(x):
    multiples = []
    results = []
    for i in range(2, x+1):
        if i not in multiples:
            results.append(i)
            for j in range(i*i, x+1, i):
                multiples.append(j)

    return results


import timeit

# Засекаем время

start_time = timeit.default_timer()
gen_prime(3000)
print(timeit.default_timer() - start_time)

# start_time = timeit.default_timer()
# gen_prime(1001)
# print(timeit.default_timer() - start_time)
50
задан BalusC 1 February 2016 в 09:16
поделиться

9 ответов

Я нашел отзыв о подсказке полезным, чтобы устранить эту проблему в Tomcat -

, обязательно загрузите драйвер, сначала выполнив Class.forName («org.postgresql.Driver»); в вашем коде.

Это из сообщения - https://www.postgresql.org/message-id/e13c14ec050510103846db6b0e@mail.gmail.com

Код jdbc работал нормально как автономная программа, но в TOMCAT он дал ошибку «Не найден подходящий драйвер»

2
ответ дан A Venkatraman 18 August 2018 в 06:21
поделиться
url="jdbc:postgresql//localhost:5432/mmas"

Этот URL-адрес выглядит неправильно, вам нужно следующее:

url="jdbc:postgresql://localhost:5432/mmas"
12
ответ дан araqnid 18 August 2018 в 06:21
поделиться

Возможно, стоит отметить, что это также может произойти, когда Windows блокирует загрузки, которые он считает небезопасными. Это можно устранить, щелкнув правой кнопкой мыши файл jar (например, ojdbc7.jar) и проверив поле «Unblock» внизу.

Диалоговое окно свойств файла JAR для Windows: Windows JAR File Properties Dialog [/g0]

1
ответ дан brasofilo 18 August 2018 в 06:21
поделиться

Позорное java.sql.SQLException: не найдено подходящего драйвера

Это исключение может иметь в основном две причины:

1. Драйвер JDBC не загружен

Вам необходимо убедиться, что драйвер JDBC помещен в собственную папку /lib сервера.

[/g15]

Или, если на самом деле вы не используете источник данных пула соединений, управляемый сервером, а вручную запускаете DriverManager#getConnection() в WAR , тогда вам нужно поместить драйвер JDBC в WAR /WEB-INF/lib и выполнить ..

Class.forName("com.example.jdbc.Driver");

.. в вашем коде перед первый DriverManager#getConnection() вызов, посредством которого вы делаете убедитесь, что вы не проглатываете / игнорируете любые ClassNotFoundException, которые могут быть выброшены им, и продолжайте поток кода, как будто ничего исключительного не произошло. См. Также Где я должен разместить драйвер JDBC для пула соединений Tomcat?

2. Или URL-адрес JDBC находится в неправильном синтаксисе

Вам нужно убедиться, что URL JDBC соответствует документации драйвера JDBC и помните, что он обычно чувствителен к регистру. Когда URL-адрес JDBC не возвращает true для Driver#acceptsURL() для любого из загруженных драйверов, тогда вы также получите именно это исключение.

В случае PostgreSQL это документально здесь .

С JDBC база данных представлена ​​URL-адресом (Uniform Resource Locator). С PostgreSQL ™ это принимает одну из следующих форм:

  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database

В случае с MySQL это здесь .

Общий формат URL-адреса JDBC для подключения к серверу MySQL следующим образом: элементы в квадратных скобках ([ ]) являются необязательными:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

В случае Oracle это документировано здесь .

Существует 2 синтаксиса URL, старый синтаксис, который будет работать только с SID и новый с именем службы Oracle.

Старый синтаксис jdbc:oracle:thin:@[HOST][:PORT]:SID

Новый синтаксис jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE


См. также:

64
ответ дан Community 18 August 2018 в 06:21
поделиться
  • 1
    Спасибо, парни! Извините, 1-я попытка не была в OP, просто jdbc: postgresql: mmas (и я пробовал других!). К сожалению, с URL-адресом araqnid, тот же результат. Прошлой ночью я поменял материал tablib на (ick) встроенную Java, и это отлично работает: try {Class.forName («org.postgresql.Driver»). NewInstance (); con = DriverManager.getConnection ("jdbc: postgresql: mmas", "mmas", "passwd"); stmt = con.createStatement (); rs = stmt.executeQuery («выберите yada yada»); if (rs! = null & amp; rs.next ()) {// пожинать славу, счастье, славу, красоту, пример Джакарты был w / taglibs, поэтому я начал этот путь. – Rick Wayne 16 December 2009 в 16:40
  • 2
    Ах. Комментарии не так сильно, как форматирование кода. Гм. Появляется ли мой новичок? (ZIIP!) В любом случае, пример Джакарты заключался в использовании & lt; sql: query & gt; вместо того, чтобы просто внедрять Java-код, и я согласен, что это гораздо более чистый способ сделать это. Не нужно явно вызывать forName () и getConnection (), правильно? Но старый уродливый метод «взломать код-код-в-презентацию» работал очень хорошо, сначала попробуйте. Таким образом, я озадачен, но теперь это больше проблема обслуживания / эстетики, чем «Это сломано, исправить или раскрасить навыки навыка бургерга». – Rick Wayne 16 December 2009 в 16:53
  • 3
    IMHO, использующий sql taglib, немного лучше, чем JDBC в сценариях ... многое предпочитает шаблон контроллера / представления, где материал db выполняется заранее, а JSP просто отображает материал. Каждый к своему, хотя, и используя sql: query, сохраняет все просто :) (ish) – araqnid 20 December 2009 в 17:24
  • 4
    Я никогда не говорил, что согласен с использованием JTL SQL taglib, но это не тема, о которой идет речь. – BalusC 20 December 2009 в 17:59
  • 5
    Спасибо, ваши строковые форматы соединений JDBC были чрезвычайно полезны! – Jay Taylor 2 August 2012 в 07:03

Я столкнулся с подобной проблемой. Мой проект в контексте - это динамический веб-проект (Java 8 + Tomcat 8), и ошибка для исключения драйвера PostgreSQL: Не найдено подходящего драйвера

. Он был разрешен путем добавления Class.forName("org.postgresql.Driver") до вызов метода getConnection()

Вот мой пример кода:

try {
            Connection conn = null;
            Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection("jdbc:postgresql://" + host + ":" + port + "/?preferQueryMode="
                    + sql_auth,sql_user , sql_password);
        } catch (Exception e) {
            System.out.println("Failed to create JDBC db connection " + e.toString() + e.getMessage());
        }
1
ответ дан Faysal Ahmed 18 August 2018 в 06:21
поделиться

Помимо добавления соединителя JDBC MySQL убедитесь, что context.xml (если он не распакован в папке webapps Tomcat) с вашими определениями соединений с БД включены в каталог Tomcats conf.

0
ответ дан feistyfawn 18 August 2018 в 06:21
поделиться

Я забыл добавить драйвер JDBC PostgreSQL в проект Mvnrepository .

Gradle:

// http://mvnrepository.com/artifact/postgresql/postgresql
compile group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4'

Maven:

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.0-801.jdbc4</version>
</dependency>

Вы также можете загрузить JAR и импортировать в свой проект вручную.

0
ответ дан Manuel Schmitzberger 18 August 2018 в 06:21
поделиться

Я использовал jruby, в моем случае я создал в config / initializers

postgres_driver.rb

$CLASSPATH << '~/.rbenv/versions/jruby-1.7.17/lib/ruby/gems/shared/gems/jdbc-postgres-9.4.1200/lib/postgresql-9.4-1200.jdbc4.jar'

или везде, где ваш драйвер, и все!

0
ответ дан Moinuddin Quadri 18 August 2018 в 06:21
поделиться

У меня была эта точная проблема при разработке приложения Spring Boot в STS, но в конечном итоге развертывание упакованной войны в WebSphere (v.9). Основываясь на предыдущих ответах, моя ситуация была уникальной. ojdbc8.jar был в моей папке WEB-INF / lib с установленным набором родительского последнего класса, но всегда говорит, что не удалось найти подходящий драйвер.

Моя последняя проблема заключалась в том, что я использовал неправильный класс DataSource потому что я просто следил за онлайн-учебниками / примерами. Нашел подсказку благодаря тому, что Дэвид Дай прокомментировал свой собственный вопрос: Spring JDBC Не удалось загрузить класс драйвера JDBC [oracle.jdbc.driver.OracleDriver]

Также позже был найден весенний гуру пример с конкретным драйвером Oracle: https://springframework.guru/configuring-spring-boot-for-oracle/

Пример, который вызывает ошибку, используя org.springframework.jdbc.datasource.DriverManagerDataSource на основе общих примеров .

@Config
@EnableTransactionManagement
public class appDataConfig {
 \* Other Bean Defs *\
    @Bean
    public DataSource dataSource() {
        // configure and return the necessary JDBC DataSource
        DriverManagerDataSource dataSource = new DriverManagerDataSource("jdbc:oracle:thin:@//HOST:PORT/SID", "user", "password");
        dataSource.setSchema("MY_SCHEMA");
        return dataSource;
    }
}

И исправленный exapmle с использованием oracle.jdbc.pool.OracleDataSource:

@Config
@EnableTransactionManagement
public class appDataConfig {
/* Other Bean Defs */
@Bean
    public DataSource dataSource() {
        // configure and return the necessary JDBC DataSource
        OracleDataSource datasource = null;
        try {
            datasource = new OracleDataSource();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        datasource.setURL("jdbc:oracle:thin:@//HOST:PORT/SID");
        datasource.setUser("user");
        datasource.setPassword("password");

        return datasource;
    }
}
0
ответ дан Ryan D 18 August 2018 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: