I am able to use liquibase on SQL Server without problems. However, if I try it on Teradata 14 I get the error below. I downloaded the jdbc from Teradata and downloaded the latest liquibase teradata extension which is liquibase-terdata-3.0.jar
I don’t get the meaning of the error message. It looks like it is looking at SQL Server because of “information_schema”.
What am I missing?
D:\liquibase-3.2.2-binTeradata>liquibase --changeLogFile=D_THTR_DM_S.xml genera
I am just creating a changeLogFile since my database is already existing. I noticed that the Liquibase tables, DATABASECHANGELOG and DATABASECHANGELOGLOCK are not created in Teradata, unlike with MS SQL.
Attached is a screenshot of the Liquibase folder I have and its contents.
It seems to be expecting to find an information_schema which probably doesn’t exist in teradata. Can you run with --logLevel=DEBUG and post the full stackTrace you are getting?
D:\liquibase-3.2.2-binTeradata>liquibase --logLevel=DEBUG --changeLogFile=D_THTR
_DM_S.xml generateChangeLog
DEBUG 9/18/14 1:24 PM: liquibase: Connected to DBADMIN@jdbc:teradata
DEBUG 9/18/14 1:24 PM: liquibase: Not adjusting the auto commit mode; it is alre
ady true
DEBUG 9/18/14 1:24 PM: liquibase: Executing QUERY database command: SELECT DATAB
ASE
DEBUG 9/18/14 1:24 PM: liquibase: Computed checksum for 1411071846832 as 5480f31
d56f4801ec3f36ad2aa8d4ea5
Unexpected error running Liquibase: liquibase.exception.DatabaseException: com.t
eradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC 14.00.00.4
1] [Error 3802] [SQLState 42S02] Database ‘information_schema’ does not exist.
SEVERE 9/18/14 1:24 PM: liquibase: liquibase.exception.DatabaseException: com.te
radata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC 14.00.00.41
] [Error 3802] [SQLState 42S02] Database ‘information_schema’ does not exist.
liquibase.exception.LiquibaseException: liquibase.command.CommandExecutionExcept
ion: liquibase.exception.DatabaseException: com.teradata.jdbc.jdbc_4.util.JDBCEx
ception: [Teradata Database] [TeraJDBC 14.00.00.41] [Error 3802] [SQLState 42S02
] Database ‘information_schema’ does not exist.
at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLo
g(CommandLineUtils.java:139)
at liquibase.integration.commandline.Main.doMigration(Main.java:904)
at liquibase.integration.commandline.Main.run(Main.java:170)
at liquibase.integration.commandline.Main.main(Main.java:89)
Caused by: liquibase.command.CommandExecutionException: liquibase.exception.Data
baseException: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database]
[TeraJDBC 14.00.00.41] [Error 3802] [SQLState 42S02] Database ‘information_schem
a’ does not exist.
at liquibase.command.AbstractCommand.execute(AbstractCommand.java:13)
at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLo
g(CommandLineUtils.java:137)
… 3 more
Caused by: liquibase.exception.DatabaseException: com.teradata.jdbc.jdbc_4.util.
JDBCException: [Teradata Database] [TeraJDBC 14.00.00.41] [Error 3802] [SQLState
42S02] Database ‘information_schema’ does not exist.
at liquibase.snapshot.ResultSetCache.get(ResultSetCache.java:77)
at liquibase.snapshot.JdbcDatabaseSnapshot$CachingDatabaseMetaData.getUn
iqueConstraints(JdbcDatabaseSnapshot.java:448)
at liquibase.snapshot.jvm.UniqueConstraintSnapshotGenerator.listConstrai
nts(UniqueConstraintSnapshotGenerator.java:88)
at liquibase.snapshot.jvm.UniqueConstraintSnapshotGenerator.addTo(Unique
ConstraintSnapshotGenerator.java:70)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGen
erator.java:72)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorC
hain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGen
erator.java:62)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorC
hain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGen
erator.java:62)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorC
hain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGen
erator.java:62)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorC
hain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGen
erator.java:62)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorC
hain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGen
erator.java:62)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorC
hain.java:50)
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:153
)
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.ja
va:226)
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.ja
va:248)
at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnap
shot.java:185)
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:167
)
at liquibase.snapshot.DatabaseSnapshot.init(DatabaseSnapshot.java:56)
at liquibase.snapshot.DatabaseSnapshot.(DatabaseSnapshot.java:33)
at liquibase.snapshot.JdbcDatabaseSnapshot.(JdbcDatabaseSnapshot.j
ava:22)
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGe
neratorFactory.java:126)
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGe
neratorFactory.java:119)
at liquibase.command.DiffCommand.createReferenceSnapshot(DiffCommand.jav
a:190)
at liquibase.command.DiffCommand.createDiffResult(DiffCommand.java:140)
at liquibase.command.GenerateChangeLogCommand.run(GenerateChangeLogComma
nd.java:45)
at liquibase.command.AbstractCommand.execute(AbstractCommand.java:8)
… 4 more
Caused by: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [Ter
aJDBC 14.00.00.41] [Error 3802] [SQLState 42S02] Database ‘information_schema’ d
oes not exist.
at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDatabaseSQLException(E
rrorFactory.java:307)
at com.teradata.jdbc.jdbc_4.statemachine.ReceiveInitSubState.action(Rece
iveInitSubState.java:108)
at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.subStateM
achine(StatementReceiveState.java:321)
at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.action(St
atementReceiveState.java:202)
at com.teradata.jdbc.jdbc_4.statemachine.StatementController.runBody(Sta
tementController.java:123)
at com.teradata.jdbc.jdbc_4.statemachine.StatementController.run(Stateme
ntController.java:114)
at com.teradata.jdbc.jdbc_4.TDStatement.executeStatement(TDStatement.jav
a:381)
at com.teradata.jdbc.jdbc_4.TDStatement.executeStatement(TDStatement.jav
a:323)
at com.teradata.jdbc.jdbc_4.TDStatement.doNonPrepExecuteQuery(TDStatemen
t.java:311)
at com.teradata.jdbc.jdbc_4.TDStatement.executeQuery(TDStatement.java:10
87)
at liquibase.snapshot.ResultSetCache$ResultSetExtractor.executeAndExtrac
t(ResultSetCache.java:185)
at liquibase.snapshot.JdbcDatabaseSnapshot$CachingDatabaseMetaData$6.fas
tFetchQuery(JdbcDatabaseSnapshot.java:467)
at liquibase.snapshot.ResultSetCache$SingleResultSetExtractor.fastFetch(
ResultSetCache.java:262)
at liquibase.snapshot.ResultSetCache.get(ResultSetCache.java:55)
… 33 more
On further review, it looks like the Teradata extension does not support any snapshot logic which would include generateChangeLog, unfortunately. The Teradata support was contributed code and I thought it included it, sorry. The extension should be overriding the default behavior of querying INFORMATION_SCHEMA with a call to DBC instead but that was not implemented.
From what I understand, the Teradata extension should work well for update/updateSQL commands, but will not work for diff/diffChangeLog/generateChangelog commands or preconditions that check the database state.
Support can certainly be implemented, it’s just that I don’t have a local teradata database currently to test against in order to do the work myself. I may be able to get to it at some point, but it probably won’t be for a month or two. If you wanted to look at implementing it yourself beforehand you certainly could. If you are, let me know and I can give you some pointers.
I know this is a very old thread, but wanted to check if there’s any update on the fix for this?
This is particularly causing an issue when i want to load a data file (.csv) into a teradata table.
Since Liquibase is unable to look at the table definitions to automatically map the excel columns to the table columns, i have to manually map them in the tag using tag for every column and in cases where there are upwards of 50 columns that’s a nightmare to map the column and datatype
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
10.05.2021 15:53:48 ERROR restartedMain [] o.s.b.SpringApplication Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set liquibase-master.xml::L2_event_priority_data::Vasyl:
Reason: liquibase.exception.UnexpectedLiquibaseException: liquibase.exception.DatabaseException: java.sql.SQLException: [Teradata Database] [TeraJDBC 17.00.00.03] [Error 3802] [SQLState 42S02] Database 'information_schema' does not exist.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at my.busines.marketing.Application.main(Application.java:128)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set liquibase-master.xml::L2_event_priority_data::Vasyl:
Reason: liquibase.exception.UnexpectedLiquibaseException: liquibase.exception.DatabaseException: java.sql.SQLException: [Teradata Database] [TeraJDBC 17.00.00.03] [Error 3802] [SQLState 42S02] Database 'information_schema' does not exist.
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:124)
at liquibase.Liquibase.lambda$null$0(Liquibase.java:273)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.Scope.child(Scope.java:222)
at liquibase.Liquibase.lambda$update$1(Liquibase.java:272)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.Liquibase.runInScope(Liquibase.java:2322)
at liquibase.Liquibase.update(Liquibase.java:216)
at liquibase.Liquibase.update(Liquibase.java:202)
at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:322)
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:275)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792)
... 23 common frames omitted
Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set liquibase-master.xml::L2_event_priority_data::Vasyl:
Reason: liquibase.exception.UnexpectedLiquibaseException: liquibase.exception.DatabaseException: java.sql.SQLException: [Teradata Database] [TeraJDBC 17.00.00.03] [Error 3802] [SQLState 42S02] Database 'information_schema' does not exist.
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:672)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:49)
at liquibase.changelog.ChangeLogIterator$2.lambda$null$0(ChangeLogIterator.java:111)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.changelog.ChangeLogIterator$2.lambda$run$1(ChangeLogIterator.java:110)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.Scope.child(Scope.java:222)
at liquibase.changelog.ChangeLogIterator$2.run(ChangeLogIterator.java:94)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.Scope.child(Scope.java:222)
at liquibase.Scope.child(Scope.java:226)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:66)
... 41 common frames omitted
Caused by: liquibase.exception.UnexpectedLiquibaseException: liquibase.exception.DatabaseException: java.sql.SQLException: [Teradata Database] [TeraJDBC 17.00.00.03] [Error 3802] [SQLState 42S02] Database 'information_schema' does not exist.
at liquibase.change.core.LoadDataChange.generateStatements(LoadDataChange.java:293)
at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1255)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:637)
... 61 common frames omitted
Caused by: liquibase.exception.DatabaseException: java.sql.SQLException: [Teradata Database] [TeraJDBC 17.00.00.03] [Error 3802] [SQLState 42S02] Database 'information_schema' does not exist.
at liquibase.snapshot.ResultSetCache.get(ResultSetCache.java:105)
at liquibase.snapshot.JdbcDatabaseSnapshot$CachingDatabaseMetaData.getUniqueConstraints(JdbcDatabaseSnapshot.java:1411)
at liquibase.snapshot.jvm.UniqueConstraintSnapshotGenerator.listConstraints(UniqueConstraintSnapshotGenerator.java:137)
at liquibase.snapshot.jvm.UniqueConstraintSnapshotGenerator.addTo(UniqueConstraintSnapshotGenerator.java:113)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:78)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:68)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:68)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:68)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:68)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:68)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:315)
at liquibase.snapshot.DatabaseSnapshot.init(DatabaseSnapshot.java:106)
at liquibase.snapshot.DatabaseSnapshot.<init>(DatabaseSnapshot.java:59)
at liquibase.snapshot.JdbcDatabaseSnapshot.<init>(JdbcDatabaseSnapshot.java:38)
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:215)
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:244)
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:228)
at liquibase.change.core.LoadDataChange.retrieveMissingColumnLoadTypes(LoadDataChange.java:619)
at liquibase.change.core.LoadDataChange.generateStatements(LoadDataChange.java:291)
... 63 common frames omitted
Caused by: java.sql.SQLException: [Teradata Database] [TeraJDBC 17.00.00.03] [Error 3802] [SQLState 42S02] Database 'information_schema' does not exist.
at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDatabaseSQLException(ErrorFactory.java:309)
at com.teradata.jdbc.jdbc_4.statemachine.ReceiveInitSubState.action(ReceiveInitSubState.java:103)
at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.subStateMachine(StatementReceiveState.java:311)
at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.action(StatementReceiveState.java:200)
at com.teradata.jdbc.jdbc_4.statemachine.StatementController.runBody(StatementController.java:137)
at com.teradata.jdbc.jdbc_4.statemachine.StatementController.run(StatementController.java:128)
at com.teradata.jdbc.jdbc_4.TDStatement.executeStatement(TDStatement.java:389)
at com.teradata.jdbc.jdbc_4.TDStatement.executeStatement(TDStatement.java:331)
at com.teradata.jdbc.jdbc_4.TDStatement.doNonPrepExecuteQuery(TDStatement.java:319)
at com.teradata.jdbc.jdbc_4.TDStatement.executeQuery(TDStatement.java:1121)
at com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:111)
at com.zaxxer.hikari.pool.HikariProxyStatement.executeQuery(HikariProxyStatement.java)
at liquibase.snapshot.ResultSetCache$ResultSetExtractor.executeAndExtract(ResultSetCache.java:275)
at liquibase.snapshot.JdbcDatabaseSnapshot$CachingDatabaseMetaData$5.fastFetchQuery(JdbcDatabaseSnapshot.java:1442)
at liquibase.snapshot.ResultSetCache$SingleResultSetExtractor.fastFetch(ResultSetCache.java:367)
at liquibase.snapshot.ResultSetCache.get(ResultSetCache.java:72)
... 87 common frames omitted
Process finished with exit code 0