crysianw
06/28/2026, 4:39 PMRocky
06/28/2026, 4:39 PMjdbc_catalog, you cannot create another one with the same name. You must provide a different name for the second one:
sql
-- First catalog
CREATE EXTERNAL CATALOG iceberg_jdbc_1
PROPERTIES (
"type" = "iceberg",
"iceberg.catalog.type" = "jdbc",
"iceberg.catalog.uri" = "jdbc:<mysql://ip1:port/db1>",
...
);
-- Second catalog (must have a different name)
CREATE EXTERNAL CATALOG iceberg_jdbc_2
PROPERTIES (
"type" = "iceberg",
"iceberg.catalog.type" = "jdbc",
"iceberg.catalog.uri" = "jdbc:<mysql://ip2:port/db2>",
...
);
2. Internal Iceberg Catalog Name
If you are trying to connect to multiple Iceberg catalogs stored within the same JDBC database, they are distinguished by a catalog_name column in the JDBC metadata tables (like iceberg_tables).
By default, many Iceberg implementations (including StarRocks') may default this internal name to jdbc_catalog. If you need to point StarRocks to a specific named catalog instance inside your JDBC database, you can try passing the iceberg.catalog.name property:
sql
CREATE EXTERNAL CATALOG my_iceberg_catalog
PROPERTIES (
"type" = "iceberg",
"iceberg.catalog.type" = "jdbc",
"iceberg.catalog.name" = "custom_internal_name", -- Tells Iceberg which catalog to look for in the DB
"iceberg.catalog.uri" = "jdbc:<mysql://ip:port/db_name>",
...
);
Key Requirements
* Version: Ensure you are on StarRocks v3.5.0 or later, as official support for Iceberg JDBC catalogs was introduced in that version range.
* Drivers: Ensure the appropriate JDBC driver (e.g., MySQL or PostgreSQL) is placed in the fe/lib and be/lib/jni-packages directories of all nodes.
* Unique URIs: If the catalogs are in different databases, simply using different StarRocks catalog names (as shown in point 1) is sufficient.
References
• data_source/catalog/iceberg/iceberg_catalog.md
• data_source/catalog/jdbc_catalog.mdcrysianw
06/28/2026, 4:51 PM