Laravel - Cockroach DB - 自动增量正在生成 UUID

Posted

技术标签:

【中文标题】Laravel - Cockroach DB - 自动增量正在生成 UUID【英文标题】:Laravel - Cockroach DB - Auto increment is generating UUID 【发布时间】:2020-03-04 15:55:48 【问题描述】:

我正在使用 Laravel 5.8 和 cockroachDB 创建新的迁移。我正在尝试使用 increments 在 laravel 迁移中生成自动增量列。但它正在生成 UUID 而不是序列。任何有想法的人都可以帮我解决这个问题。请检查我的迁移。

Schema::create('billing_organisations_test1', function (Blueprint $table) 
            $table->increments('id');     //bigIncrements also not working
            $table->string('name');
            $table->timestamps(6);
            $table->softDeletes('deleted_at', 6)->default(null);
        );

Laravel 迁移正在生成以下查询。如何将 id 列默认值设置为自增。

CREATE TABLE billing_organisations_test1 (  
id INT8 NOT NULL DEFAULT unique_rowid(),
    name VARCHAR(255) NOT NULL,
    created_at TIMESTAMP NULL,
    updated_at TIMESTAMP NULL,
    deleted_at TIMESTAMP NULL,
    CONSTRAINT "primary" PRIMARY KEY (id ASC),
    FAMILY "primary" (id, name, created_at, updated_at, deleted_at)
)

【问题讨论】:

为什么要在时间戳和 softDelet 中添加 6 个字符的限制? Cockroach DB 不支持 Timestamp() 【参考方案1】:

您需要将serial_normalization 设置为sql_sequence。请注意,这会降低性能。应用真的需要递增 ID 吗?

见:https://www.cockroachlabs.com/docs/stable/serial.html#modes-of-operation

【讨论】:

【参考方案2】:

在你的代码下面试试这个。

DB::statement("ALTER TABLE table_name AUTO_INCREMENT = 0;");

【讨论】:

以上是关于Laravel - Cockroach DB - 自动增量正在生成 UUID的主要内容,如果未能解决你的问题,请参考以下文章

Cockroach数据库初体验

cockroach SortedDiskMap类图(临时引擎 rocksdb与pebble实现)

cockroach底层存储RocksDB自定义Key比较器(libroach)

laravel DB 执行 mysql函数或者字段

Laravel 4 无法运行整个 RAW 查询

Laravel 4 DB 事务未提交和回滚