sql >> データベース >  >> RDS >> PostgreSQL

特性`diesel::Expression`は`bigdecimal::BigDecimal`には実装されていません

    ディーゼルは貨物機能を使用して、拡張機能にオプトインします。

    これらの明確なドキュメントページは見つかりませんでしたが、Cargo.tomlにリストされています:

    [features]
    default = ["with-deprecated", "32-column-tables"]
    extras = ["chrono", "serde_json", "uuid", "deprecated-time", "network-address", "numeric", "r2d2"]
    unstable = ["diesel_derives/nightly"]
    large-tables = ["32-column-tables"]
    huge-tables = ["64-column-tables"]
    x32-column-tables = ["32-column-tables"]
    32-column-tables = []
    x64-column-tables = ["64-column-tables"]
    64-column-tables = ["32-column-tables"]
    x128-column-tables = ["128-column-tables"]
    128-column-tables = ["64-column-tables"]
    postgres = ["pq-sys", "bitflags", "diesel_derives/postgres"]
    sqlite = ["libsqlite3-sys", "diesel_derives/sqlite"]
    mysql = ["mysqlclient-sys", "url", "diesel_derives/mysql"]
    with-deprecated = []
    deprecated-time = ["time"]
    network-address = ["ipnetwork", "libc"]
    numeric = ["num-bigint", "bigdecimal", "num-traits", "num-integer"]
    

    数値を有効にする必要があります 機能を備え、ディーゼルと互換性のあるバージョンのbigdecimalを使用していることを確認してください:

    [dependencies]
    diesel = { version = "1.4.2", features = ["numeric"] }
    bigdecimal = "0.0.14"
    

    そして、コードはコンパイルされます:

    #[macro_use]
    extern crate diesel;
    
    use crate::schema::threads;
    use bigdecimal::BigDecimal;
    
    mod schema {
        table! {
            threads (id) {
                id -> Int4,
                bounty -> Numeric,
            }
        }
    }
    
    #[derive(Debug, Insertable)]
    #[table_name = "threads"]
    pub struct InsertableThread {
        pub bounty: BigDecimal,
    }
    

    参照:

    • 特性が明確に実装されているタイプに実装されていないのはなぜですか?


    1. SQLで2つの列を乗算する方法

    2. SQLServerをPostgreSQLに接続する

    3. Oracle 11gは、一致するすべてのオカレンスを正規表現で取得します

    4. PostgreSQL自動インクリメント