Решением было включить следующее /migrations/00000000000010_install_uuid_feature/Up.sql
в качестве собственной миграции в начале набора миграции и запускать от имени суперпользователя postgres
:
-- Install the UUID extension to this database
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Другие советы UUID, если вы используете Rust Diesel в качестве вашего ORM:
- Обязательно включите необходимые функции дизеля:
[dependencies]
diesel = { version = "1.4", features = ["postgres", "chrono", "uuidv07", "serde_json"] }
uuid = {version = "0.8", features = ["serde", "v4"]}
chrono = { version = "0.4", features = ["serde"] }
Не проверяйте форматирование в действии Github - сгенерированная схема дизеля приведет к сбою сборки. Мое обновленное действие Github для Rust Diesel с поддержкой UUID приведено ниже:
name: Rust
on: [push]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
rust: [stable, beta]
services:
postgres:
image: postgres:11.6
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
env:
RUSTFLAGS: -D warnings
CARGO_INCREMENTAL: 0
RUN_SLOW_TESTS: 1
RUSTUP_MAX_RETRIES: 10
CARGO_NET_RETRY: 10
steps:
- uses: hecrj/setup-rust-action@v1
with:
rust-version: ${{ matrix.rust }}
components: rustfmt
targets: wasm32-unknown-unknown
- uses: actions/checkout@master
- name: Install Dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update && sudo apt-get install libudev-dev zlib1g-dev alsa libasound2-dev
- name: Build
run: cargo build --verbose
- name: Install Diesel CLI
run: cargo install diesel_cli --no-default-features --features postgres
- name: Setup Diesel
env:
DATABASE_URL: postgres://postgres:postgres@localhost/timeseries
run: diesel setup
- name: Run tests
env:
DATABASE_URL: postgres://postgres:postgres@localhost/timeseries
run: cargo test --verbose
Полный пример
База данных временных рядов