Talend не удалось подключиться к PostgreSQL

В настоящее время я создаю задание ETL в talend, которое подключается к базе данных PostgreSQL, и столкнулся с ошибкой подключения.

Я установил соединение db в своем репозитории talend со всеми деталями соединения, которые мне нужны для подключения к моей базе данных postgreSQL, и сохранил как «mydbconnection», указанную конкретную схему базы данных.

Я использовал mydbconnection в tPostgreSQLOutput и tPostgreSQLInput, и оба работали отлично. Однако, когда я использую это же соединение из репозитория в tEltPostgreSQLOutput_1, возникает ошибка (см. ниже).

  1. I have tried the following to resolve it:
    1. Check the connection details in repository and ran 'Test connection' and all was ok
    2. Убедился, что имя пользователя имеет привилегии над этой задачей - все ок
    3. Проверено максимальное количество сеансов, к которым может подключиться пользователь talend - ок
    4. Проверено максимальное количество сессий, которое сервер базы данных готов принять - все в порядке
    5. Проверил журналы базы данных - ничего не записано (даже "неудачная попытка подключения")
    6. Проверил версию java на моей машине - v7 поддерживается последней версией talend.
    7. Искал предыдущие вопросы здесь!

... и понятия не имею, куда идти отсюда. Кто-нибудь знает какие-либо другие хорошие направления расследования, чтобы решить эту проблему?

Сообщение об ошибке:

Exception in component tELTPostgresqlOutput_1
org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:137)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:124)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
    at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:386)
    at org.postgresql.Driver.connect(Driver.java:260)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at zurich_segmentation_prod.is_300_customer_new_0_1.is_300_customer_new.tELTPostgresqlMap_1Process(is_300_customer_new.java:338)
    at zurich_segmentation_prod.is_300_customer_new_0_1.is_300_customer_new.runJobInTOS(is_300_customer_new.java:602)
    at zurich_segmentation_prod.is_300_customer_new_0_1.is_300_customer_new.main(is_300_customer_new.java:470)

person listonator    schedule 23.01.2014    source источник
comment
Есть ли что-то еще в этом исключении, может быть, раздел Caused by:? Какую версию PgJDBC вы используете? Есть ли какое-либо сообщение в журнале ошибок сервера PostgreSQL?   -  person Craig Ringer    schedule 24.01.2014
comment
Привет, Крейг, кажется, что talend не заполняет сведения о соединении в базовом java-скрипте. Я открыл java и нашел следующее: dbUser_tELTPostgresqlOutput_1 = ; и dbPwd_tELTPostgresqlOutput_1 = ; Теперь я жестко закодировал их в java, и это работает, но это небезопасное решение. Интересно, у кого-нибудь еще была эта проблема?   -  person listonator    schedule 24.01.2014
comment
Из вашего описания непонятно, как вы используете tEltPostgreSQLOutput в своей работе. Не могли бы вы загрузить скриншот?   -  person cyroxx    schedule 24.01.2014
comment
Привет, Cyroxx... Мне нужна более высокая репутация, прежде чем я смогу опубликовать изображение. Внутри компонента tELTPostgreSQLOutput я выбрал соединение репозитория с моей базой данных и ввел имя моей таблицы и схемы, вот и все.   -  person listonator    schedule 24.01.2014
comment
Привет всем... для тех, кто столкнется с этой проблемой в будущем... я нашел способ ее обойти. Я добавил tPostgreSQLConnection в свою рабочую область, а затем отметил параметр в моем tELTPostgreSQLMap, чтобы «использовать существующее соединение», и, похоже, он остается подключенным, когда рабочий поток достигает компонента tEltPostgreSQLOutput. Это некрасиво, но это работает. Более очевидный способ не работает, и в JIRA от Talend добавлен баг-трекер.   -  person listonator    schedule 28.01.2014
comment
Кроме того, спасибо за вашу помощь, ребята.   -  person listonator    schedule 28.01.2014


Ответы (1)


для тех, кто столкнется с этой проблемой в будущем... я нашел способ ее обойти. Я добавил tPostgreSQLConnection в свою рабочую область, а затем отметил параметр в моем tELTPostgreSQLMap, чтобы «использовать существующее соединение», и, похоже, он остается подключенным, когда рабочий поток достигает компонента tEltPostgreSQLOutput. Это некрасиво, но это работает. Более очевидный способ (то, как я это сделал изначально) не работает. В JIRA от Talend была добавлена ​​ошибка именно для этого сценария.

person listonator    schedule 28.01.2014