The primary key will not be set. We got this exception:
SEVERE 28.04.15 10:54: liquibase: src/main/resources/liquibase/changelog-master.xml: src/main/resources/liquibase/changelog-2.0_test_data_set1_DONT_CHANGE.xml::test_data-file::ftr8fe: Change Set src/main/resources/liquibase/changelog-2.0_test_data_set1_DONT_CHANGE.xml::test_data-file::ftr8fe failed. Error: org.postgresql.util.PSQLException: ERROR: null value in column "db_id" violates not-null constraint
Detail: Failing row contains (null, null, null, 1, \x89504e470d0a1a0a0000000d49484452000000b1000000b108060000008b29..., 5867, 8f13b0edb57b156bf807f0e329afc76c.png, 8f13b0edb57b156bf807f0e329afc76c, image/png).
liquibase.exception.DatabaseException: org.postgresql.util.PSQLException: ERROR: null value in column "db_id" violates not-null constraint
Detail: Failing row contains (null, null, null, 1, \x89504e470d0a1a0a0000000d49484452000000b1000000b108060000008b29..., 5867, 8f13b0edb57b156bf807f0e329afc76c.png, 8f13b0edb57b156bf807f0e329afc76c, image/png).
at liquibase.statement.ExecutablePreparedStatementBase.execute(ExecutablePreparedStatementBase.java:79)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:118)
at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1206)
at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1189)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:534)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:43)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:70)
at liquibase.Liquibase.update(Liquibase.java:195)
at liquibase.Liquibase.update(Liquibase.java:174)
at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate(LiquibaseUpdate.java:31)
at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask(AbstractLiquibaseUpdateMojo.java:24)
at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute(AbstractLiquibaseMojo.java:367)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
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:483)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "db_id" violates not-null constraint
Detail: Failing row contains (null, null, null, 1, \x89504e470d0a1a0a0000000d49484452000000b1000000b108060000008b29..., 5867, 8f13b0edb57b156bf807f0e329afc76c.png, 8f13b0edb57b156bf807f0e329afc76c, image/png).
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:413)
at liquibase.statement.ExecutablePreparedStatementBase.execute(ExecutablePreparedStatementBase.java:77)
Using this statement to insert the binary data:
<insert tableName="webtools_file"> <column name="db_id" valueNumeric="271" /> <column name="db_created" valueDate="${now}" /> <column name="db_updated" valueDate="${now}" /> <column name="db_version" valueNumeric="1" /> <column name="content" valueBlobFile="icons/8f13b0edb57b156bf807f0e329afc76c.png" /> <column name="filesize" valueNumeric="5867" /> <column name="filename" value="8f13b0edb57b156bf807f0e329afc76c.png" /> <column name="hash" value="8f13b0edb57b156bf807f0e329afc76c" /> <column name="mimetype" value="image/png" /> </insert>
This works fine with Liquibase 3.2.3.
But if we would like to set the primary key by database sequence like:
<insert tableName="webtools_file"> <column name="db_id" valueSequenceNext="database_version_seq" /> <column name="db_created" valueDate="${now}" /> <column name="db_updated" valueDate="${now}" /> <column name="db_version" valueNumeric="1" /> <column name="content" valueBlobFile="icons/8f13b0edb57b156bf807f0e329afc76c.png" /> <column name="filesize" valueNumeric="5867" /> <column name="filename" value="8f13b0edb57b156bf807f0e329afc76c.png" /> <column name="hash" value="8f13b0edb57b156bf807f0e329afc76c" /> <column name="mimetype" value="image/png" /> </insert>
or:
<insert tableName="webtools_file"> <column name="db_id" valueComputed="NEXTVAL('database_version_seq')" /> <column name="db_created" valueDate="${now}" /> <column name="db_updated" valueDate="${now}" /> <column name="db_version" valueNumeric="1" /> <column name="content" valueBlobFile="icons/8f13b0edb57b156bf807f0e329afc76c.png" /> <column name="filesize" valueNumeric="5867" /> <column name="filename" value="8f13b0edb57b156bf807f0e329afc76c.png" /> <column name="hash" value="8f13b0edb57b156bf807f0e329afc76c" /> <column name="mimetype" value="image/png" /> </insert>
The primary key will not be set. We got this exception:
SEVERE 28.04.15 10:54: liquibase: src/main/resources/liquibase/changelog-master.xml: src/main/resources/liquibase/changelog-2.0_test_data_set1_DONT_CHANGE.xml::test_data-file::ftr8fe: Change Set src/main/resources/liquibase/changelog-2.0_test_data_set1_DONT_CHANGE.xml::test_data-file::ftr8fe failed. Error: org.postgresql.util.PSQLException: ERROR: null value in column "db_id" violates not-null constraint Detail: Failing row contains (null, null, null, 1, \x89504e470d0a1a0a0000000d49484452000000b1000000b108060000008b29..., 5867, 8f13b0edb57b156bf807f0e329afc76c.png, 8f13b0edb57b156bf807f0e329afc76c, image/png). liquibase.exception.DatabaseException: org.postgresql.util.PSQLException: ERROR: null value in column "db_id" violates not-null constraint Detail: Failing row contains (null, null, null, 1, \x89504e470d0a1a0a0000000d49484452000000b1000000b108060000008b29..., 5867, 8f13b0edb57b156bf807f0e329afc76c.png, 8f13b0edb57b156bf807f0e329afc76c, image/png). at liquibase.statement.ExecutablePreparedStatementBase.execute(ExecutablePreparedStatementBase.java:79) at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:118) at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1206) at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1189) at liquibase.changelog.ChangeSet.execute(ChangeSet.java:534) at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:43) at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:70) at liquibase.Liquibase.update(Liquibase.java:195) at liquibase.Liquibase.update(Liquibase.java:174) at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate(LiquibaseUpdate.java:31) at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask(AbstractLiquibaseUpdateMojo.java:24) at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute(AbstractLiquibaseMojo.java:367) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213) at org.apache.maven.cli.MavenCli.main(MavenCli.java:157) 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:483) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "db_id" violates not-null constraint Detail: Failing row contains (null, null, null, 1, \x89504e470d0a1a0a0000000d49484452000000b1000000b108060000008b29..., 5867, 8f13b0edb57b156bf807f0e329afc76c.png, 8f13b0edb57b156bf807f0e329afc76c, image/png). at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:413) at liquibase.statement.ExecutablePreparedStatementBase.execute(ExecutablePreparedStatementBase.java:77)