現在初期データ投入のためのファイルを作成しています。
- USERSテーブルにデータ投入
- USERS_PROPERTIESてテーブルにデータ投入
(ここでuser_idに1で投入したユーザーのIDを入れたい)
こんな感じでinsertファイルを作成しているのですが上手くいきません。
↓エラー内容です。
USERS_PROPERTIESテーブルのis_rootにNOT NULLがかかっているのでそこで弾かれます
error: error: null value in column "is_root" violates not-null constraint
INSERT INTO "USERS_PROPERTIES"( user_id ) SELECT "USERS".id FROM "USERS" WHERE id = 1; INSERT INTO "USERS_PROPERTIES"( id, is_root, title, status) VALUES( 1, 'true', 'ceo', 'busy');
ここの順番を変えると今度はuser_idが空です。というエラーになってしまいます。
#テーブル設計
USERS
|id|uid|name|email|first_name|last_name|gender|
|:--|:--:|--:|
||||
USERS_PROPERTIES
|id|is_root|title|status|user_id|
|:--|:--:|--:|
||NOT NULL||
#全体コード
typescript
1import { createConnection, EntityManager } from "typeorm"; 2 3const main = async () => { 4 const connection = await createConnection(); 5 const entityManager = await connection.manager; 6 await runner(entityManager, createUsersData); 7 await runner(entityManager, createUserpropertiesData); 8 await connection.close(); 9}; 10 11main().then(() => console.log("completed")); 12 13const runner = async ( 14 entityManager: EntityManager, 15 creater: (entityManager: EntityManager) => Promise<any> 16) => 17 creater(entityManager) 18 .then(() => console.log(`created`)) 19 .catch((v) => console.log(`failed: ${v}`)); 20 21const createUsersData = (entityManager: EntityManager) => 22 entityManager.query(` 23 INSERT INTO "USERS" ( id, uid ,email, first_name, last_name, gender) VALUES(1, 1, 'aaa@aaa', '山田', '太郎', 'male'); 24 `); 25 26 const createUserpropertiesData = (entityManager: EntityManager) => 27 entityManager.query(`; 28 INSERT INTO "USERS_PROPERTIES"( user_id ) SELECT "USERS".id FROM "USERS" WHERE id = 1; 29 INSERT INTO "USERS_PROPERTIES"( id, is_root, title, status) VALUES( 1, 'true', 'ceo', 'busy'); 30 `); 31 32
回答2件
あなたの回答
tips
プレビュー