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 SortedDiskMap类图(临时引擎 rocksdb与pebble实现)