Метод получения org.postgresql.jdbc4.Jdbc4Connection.isValid(int) еще не реализован

Я создал новый проект Play 2.5.3 и получаю эту ошибку.

Я прочитал в другом ответе, что драйвер устарел, поэтому я добавил то, что я считаю последним драйвером, например:

Я добавил зависимость драйвера postgress следующим образом:

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs,
  "postgresql" % "postgresql" % "9.1-901-1.jdbc4"
)

Но все равно получаю ошибку. Есть идеи, как это исправить?


person TomahawkPhant    schedule 31.05.2016    source источник
comment
Самая последняя версия "org.postgresql" % "postgresql" % "9.4.1208".   -  person marcospereira    schedule 01.06.2016


Ответы (1)


Похоже, эта функция действительно не реализована в версии драйвера 9.1-901
см. исходный код: http://grepcode.com/file/repo1.maven.org/maven2/postgresql/postgresql/9.1-901.jdbc4/org/postgresql/jdbc4/AbstractJdbc4Connection.java#AbstractJdbc4Connection.isValid%28int%29

117    public boolean isValid(int timeout) throws SQLException
118    {
119        checkClosed();
120        throw org.postgresql.Driver.notImplemented(this.getClass(), "isValid(int)");
121    }

Вы можете использовать более новую версию драйвера, в настоящее время самая новая версия драйвера: Версия 9.4-1208, см. эту ссылку: https://jdbc.postgresql.org/


Или вы можете реализовать эту функцию самостоятельно - вы можете скопировать их реализацию отсюда:
http://grepcode.com/file/repo1.maven.org/maven2/org.postgresql/postgresql/9.4-1201-jdbc41/org/postgresql/jdbc4/AbstractJdbc4Connection.java#AbstractJdbc4Connection.isValid%28int%29

127    public boolean isValid(int timeout) throws SQLException
128    {
129        if (isClosed()) {
130            return false;
131        }
132     if (timeout < 0) {
133            throw new PSQLException(GT.tr("Invalid timeout ({0}<0).", timeout), PSQLState.INVALID_PARAMETER_VALUE);
134        }
135     boolean valid = false;
136        Statement stmt = null;
137     try {
138         if (!isClosed()) {
139             stmt = createStatement();
140             stmt.setQueryTimeout( timeout );
141             stmt.executeUpdate( "" );
142             valid = true;
143         }
144     }
145     catch ( SQLException e) {
146         getLogger().log(GT.tr("Validating connection."),e);
147     }
148     finally
149     {
150         if(stmt!=null) try {stmt.close();}catch(Exception ex){}
151     }
152        return valid;    
153}
person krokodilko    schedule 31.05.2016