Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

(click on this box to dismiss)

CM returns: "-2003 Cannot communicate with broker"

I am using CUBRID Manager with CUBRID 2008 R2.2 version engine.
When I trying to connect to a DB, I have encountered an error message as "-2003 Cannot communicate with broker".
How can I do?

link comment (0)
asked 5 years ago
98 Answers

The error means your client cannot communicate with CUBRID broker in servierside for some reason.
First, you can doubt if your JDBC driver version in your CM client is as same as DB server's. You can automatically detect older/newer versions of JDBC drivers in CM or Query Browser, otherwise you can manually add your driver from .

Choose a right version of JDBC driver and replace it in the clientside and then retry to connect to your DB.

link comment (0)
answered 5 years ago

Secondly I can doubt your connection between your client and broker was disconnected in the middle of operation. At this moment you will have "cannot communicate with broker" when you execute something through driver. Check your network state, or other causes why it was disconnected. Then you have to retry connecting to your DB and continue it.


link comment (0)
answered 5 years ago

It can be occured from the following methods on cubrid jdbc driver.

synchronized public UBatchResult batchExecute(String batchSqlStmt[]);
synchronized public void addElementToSet(CUBRIDOID oid, String attributeName, Object value);
synchronized public void dropElementInSequence(CUBRIDOID oid, String attributeName, int index);
synchronized public void dropElementInSet(CUBRIDOID oid, String attributeName, Object value);
synchronized public void endTransaction(boolean type);
synchronized public UStatement getByOID(CUBRIDOID oid, String[] attributeName);
synchronized public String getDatabaseProductVersion();
synchronized public int getIsolationLevel();
synchronized public String getQueryplanOnly(String sql);
synchronized public UStatement getSchemaInfo(int type, String arg1, String arg2, byte flag);
synchronized public int getSizeOfCollection(CUBRIDOID oid, String attributeName);
synchronized public void insertElementIntoSequence(CUBRIDOID oid, String attributeName, int index, Object value);
synchronized public byte[] lobNew(int lob_type);
synchronized public int lobRead(byte[] packedLobHandle, long offset, byte[] buf, int start, int len);
synchronized public int lobWrite(byte[] packedLobHandle, long offset, byte[] buf, int start, int len);
synchronized public Object oidCmd(CUBRIDOID oid, byte cmd);
synchronized public UStatement prepare(String sql, byte flag, boolean recompile);
synchronized public void putByOID(CUBRIDOID oid, String attributeName[], Object values[]);
synchronized public void putElementInSequence(CUBRIDOID oid, String attributeName, int index, Object value);
private void reconnect() throws IOException, UJciException;
synchronized public void setIsolationLevel(int level);
synchronized public void setLockTimeout(int timeout);

public UError cancel();
synchronized public void close(boolean close_srv_handle);
synchronized public void closeCursor();
synchronized public void execute(boolean isAsync, int maxRow, int maxField, boolean executeAll, boolean isSensitive, boolean isScrollable, boolean isQueryPlan, boolean isOnlyPlan, boolean isHoldable, UStatementCacheData cacheData, int queryTimeout);
synchronized public UBatchResult executeBatch();
synchronized public boolean getGeneratedKeys();
synchronized public String getQueryplan();
synchronized public void moveCursor(int offset, int origin);
synchronized public boolean nextResult();
synchronized public void reFetch();
synchronized public void updateRows(int cursorPosition, int[] indexes, Object[] values);

Error message can be found on UErrorCode class of jdbc driver.

messageString.put(new Integer(ER_COMMUNICATION), "Cannot communicate with the broker");

link comment (0)
answered 5 years ago

If a disconnection between jdbc and broker occurs, CAS process in the broker can be dead for some reason. Although a network has no problem, a broker intentionally kills a CAS process to prevent from becoming too big in its size when lots of queries were processed in a single transaction or batch operation.  

link comment (0)
answered 5 years ago

You are either using a very old browser or a browser that is not supported.
In order to browse you need to have one of the following browsers:

Internet Explorer: Mozilla Firefox: Google Chrome: