Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 液化酶自增_Java_Postgresql_Liquibase - Fatal编程技术网

Java 液化酶自增

Java 液化酶自增,java,postgresql,liquibase,Java,Postgresql,Liquibase,如何使用liquibase在PostgreSQL中的列上使用“startWith”设置autoincrement属性 出于某种原因,它总是从1开始。我尝试使用自定义序列,但也没用 <column autoIncrement="true" startWith="100" name="id" type="bigint"> 这是我当前的列定义,它不起作用 编辑: 我想使用liquibase从csv导入数据。我尝试了以下方法: <changeSet author="author"

如何使用liquibase在PostgreSQL中的列上使用“startWith”设置autoincrement属性

出于某种原因,它总是从1开始。我尝试使用自定义序列,但也没用

<column autoIncrement="true" startWith="100" name="id" type="bigint">

这是我当前的列定义,它不起作用

编辑:

我想使用liquibase从csv导入数据。我尝试了以下方法:

<changeSet author="author" id="createSequence">
    <createSequence
                    incrementBy="1"
                    sequenceName="mytable_id_seq"
                    startValue="1000"/>
    </changeSet>
</changeSet>


<changeSet author="author" id="1-mytable">
    <createTable tableName="mytable">
        <column name="id" type="BIGSERIAL" defaultValueComputed="nextval('mytable_id_seq')">
              <constraints primaryKey="true" primaryKeyName="mytable_pkey"/>
        </column>
    </createTable>

    <loadData encoding="UTF-8"
              file="liquibase/data/mytable.csv"
              separator=","
              tableName="mytable">
    </loadData>
</changeSet>

如果我尝试这样做,我会收到以下错误“currval of sequence“table_id_seq”尚未在此会话中定义”,我认为它使用公共模式中的序列,而不是我设置为liquibase的序列

  • 我尝试的另一件事是手动更新它:
  • 将序列mytable_id_seq重新启动为100;


    在本例中,使用的序列是来自公共模式的序列,但我想使用设置为liquibase

    的模式,而不是使用bigserial,这是一种特定于postgres的自动递增bigint。如果要设置自己的增量和序列,请使用bigint。 数据类型smallserial、serial和bigserial不是真正的类型,只是为了便于创建唯一标识符列(类似于某些其他数据库支持的AUTO_INCREMENT属性)。在当前实现中,指定:

    CREATE SEQUENCE tablename_colname_seq AS integer;
    CREATE TABLE tablename (
        colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
    );
    ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
    
    从这里

    CREATE SEQUENCE tablename_colname_seq AS integer;
    CREATE TABLE tablename (
        colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
    );
    ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;