web-dev-qa-db-ja.com

QueryFailedError:列「price」にnull値が含まれています-TYPEORM-POSTGRESQL

簡単なテーブルを作成しました:

import { Column, Entity, PrimaryGeneratedColumn } from "typeorm"

@Entity()
export class Test {
@PrimaryGeneratedColumn()
public id!: number

@Column({ nullable: false })
public name!: string

@Column({ nullable: false, type: "float" })
public price!: number

}

マイグレーションを生成して実行します。データベースにデータがなく、サーバーを実行すると成功します。しかし、データベースに1行追加して再度実行すると、次のエラーが表示されます。

QueryFailedError: the column «price» contain null values

データベースには、すべてのデータを含む行が明確に含まれています。私は多くのケースを試しましたが、どれも正しくありませんでした。

誰かそれについて何かアイデアはありますか?

7

同様の問題があり、 this thread の下部に報告しました。

おそらくsynchronize: true ORM構成で。このため、アプリを実行するたびにTypeormはテーブルを作成しようとし、データがある場合は誤解を招くエラーをスローします。

ここ から:

synchronize-アプリケーションが起動するたびにデータベーススキーマを自動作成するかどうかを示します。このオプションに注意し、本番環境では使用しないでください。そうしないと、本番データが失われる可能性があります。このオプションは、デバッグおよび開発中に役立ちます。代わりに、CLIを使用してschema:syncコマンドを実行できます。 MongoDBはスキーマレスであるため、MongoDBデータベースの場合はスキーマを作成しないことに注意してください。代わりに、インデックスを作成するだけで同期します。

2
Alain1405

私はこの実体を持っていました

import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";

@Entity()
export class User {

@PrimaryGeneratedColumn()
id!: number;

@Column('text')
firstName!: string;

}

「列 "firstName"にnull値が含まれています」というエラーが表示されました。そこで、@ pleerockがここで提案したように{nullable:true}を追加しました https://github.com/typeorm/typeorm/issues/845 と動作しました。

import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";

@Entity()
export class User {

@PrimaryGeneratedColumn()
id!: number;

@Column('text', {nullable: true})
firstName: string;

}
0
Domiserver

nullable宣言を削除した場合、またはtrueに設定した場合...

次に、 class-validator の検証デコレータを使用してnullableチェックを実行できます。

0
tonkatata