Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.0.0
-
None
-
None
Description
If you run schematool to set up information schema, but the SYS database already exists, here's what happens:
[vagrant@trunk apache-hive-3.0.0-SNAPSHOT-bin]$ schematool -metaDbType mysql -dbType hive -initSchema -url jdbc:hive2://localhost:10000/default -driver org.apache.hive.jdbc.HiveDriver Metastore connection URL: jdbc:hive2://localhost:10000/default Metastore Connection Driver : org.apache.hive.jdbc.HiveDriver Metastore connection User: hive Starting metastore schema initialization to 3.0.0 Initialization script hive-schema-3.0.0.hive.sql Error: org.apache.hive.service.cli.HiveSQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database SYS already exists at org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:315) at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:254)
Why is this a problem you ask?
If you run schematool without hive.metastore.db.type set (or set to the wrong thing), it will create the sys database but fail to create any of the tables within it. If you go and fix hive.metastore.db.type and re-run you'll get this failure until you drop the SYS database (which must be done as the hive user).
Can the init script use "create database if not exists sys" rather than just "create database sys"?
Attachments
Attachments
Issue Links
- blocks
-
HIVE-16946 Information Schema Improvements
- Open