最新版 |
編集中の文章 |
1行目: |
1行目: |
| [[category:memo|{{PAGENAME}}]] | | [[category:memo|{{PAGENAME}}]] |
| {{Font color}} | | {{Font color}} |
− | == tep5 準備 == | + | == 準備 == |
| プロジェクトディレクトリ作成 移動 [[rails前バージョン確認|バージョン確認]] | | プロジェクトディレクトリ作成 移動 [[rails前バージョン確認|バージョン確認]] |
| | | |
178行目: |
178行目: |
| === clientsテーブル othersテーブル === | | === clientsテーブル othersテーブル === |
| | | |
− | ==== 2022-12 -14 clientsテーブル ==== | + | ==== 2022-12 -14==== |
| latest_dumpデータベースからダンプして 作業データベースにリストアする | | latest_dumpデータベースからダンプして 作業データベースにリストアする |
| % pg_dump -t clients latest_dump > ../client_dump.sql | | % pg_dump -t clients latest_dump > ../client_dump.sql |
219行目: |
219行目: |
| ERROR: relation "public.jiins" does not exist</nowiki> | | ERROR: relation "public.jiins" does not exist</nowiki> |
| | | |
− | 重複確認
| |
− | <nowiki>=# SELECT ie_id, COUNT(ie_id)
| |
− | FROM clients
| |
− | where nusi = true GROUP BY ie_id
| |
− | HAVING COUNT(ie_id) > 1
| |
− | ORDER BY ie_id;
| |
− | ie_id | count
| |
− | -------+-------
| |
− | 2090 | 2
| |
− | 2129 | 2
| |
− | 2167 | 2
| |
− | 2174 | 2
| |
− | .
| |
− | .
| |
− | .
| |
− | (131 rows)</nowiki>
| |
− |
| |
− | 桁数を変えて重複を解消する
| |
| <nowiki>update_dump=# update clients SET ie_id = ie_id + 20000 where jiin_id = 2; | | <nowiki>update_dump=# update clients SET ie_id = ie_id + 20000 where jiin_id = 2; |
| UPDATE 777 | | UPDATE 777 |
243行目: |
225行目: |
| update_dump=# update clients SET ie_id = ie_id + 40000 where jiin_id = 4; | | update_dump=# update clients SET ie_id = ie_id + 40000 where jiin_id = 4; |
| UPDATE 334</nowiki> | | UPDATE 334</nowiki> |
− |
| |
− | 主重複解消
| |
− | <nowiki>update_dump=# update clients set nusi = false where id = 3703;
| |
− | UPDATE 1
| |
− | update_dump=# update clients set nusi = false where id = 1346;
| |
− | UPDATE 1</nowiki>
| |
− |
| |
− | 不要データ削除 修正
| |
− | <nowiki>update_dump=# delete from clients where id in (4028,3911,3912,2998,3007,4359);
| |
− | DELETE 0</nowiki>
| |
− | <nowiki>update_dump=# update clients set nusi = true where id = 523;
| |
− | UPDATE 1
| |
− | update_dump=# delete from clients where id = 845;
| |
− | DELETE 1
| |
− | update_dump=# update clients set ie_id = 1264 where id = 515;
| |
− | UPDATE 1
| |
− | update_dump=# update clients set ie_id = 1264 where id = 1463;
| |
− | UPDATE 1
| |
− | update_dump=# update clients set nusi = false where id = 515;
| |
− | UPDATE 1
| |
− | update_dump=# delete from clients where id = 217;
| |
− | DELETE 1
| |
− | update_dump=# update clients set nusi = false where id = 218;
| |
− | UPDATE 1
| |
− | update_dump=# update clients set ie_id = 204 where id = 218;
| |
− | UPDATE 1
| |
− | update_dump=# delete from clients where id = 811;
| |
− | DELETE 1
| |
− | update_dump=# update clients set nusi = true where id = 1792;
| |
− | UPDATE 1
| |
− | update_dump=# delete from clients where id = 810;
| |
− | DELETE 1
| |
− | update_dump=# delete from clients where ie_id = 22653;
| |
− | DELETE 3</nowiki>
| |
− |
| |
− | 確認
| |
− | <nowiki>update_dump=# select count(*) from clients;
| |
− | count
| |
− | -------
| |
− | 5131
| |
− | (1 row)</nowiki>
| |
− |
| |
− | テーブル名変更
| |
− | update_dump=# ALTER TABLE clients RENAME TO clients_old;
| |
− |
| |
− | 新テーブルのスキーマをダンプ リストア
| |
− | % pg_dump --username=jq --schema-only --table clients tep5_development > ../clients_schema.sql
| |
− | % psql --username=jq update_dump < ../clients_schema.sql
| |
− |
| |
− | 旧テーブルをセレクトして新テーブルにインサート
| |
− | <nowiki>update_dump=# insert into clients
| |
− | (
| |
− | id, user_id, note_id, content, client_line, memo, created_at, updated_at
| |
− | )
| |
− | select
| |
− | ie_id, user_id, jiin_id, name, table_order, memo, created_at, updated_at
| |
− | from
| |
− | clients_old
| |
− | where
| |
− | nusi = true;
| |
− | INSERT 0 1304</nowiki>
| |
− |
| |
− | テーブルの増分を求める
| |
− | <nowiki>update_dump=# SELECT created_at FROM clients_new EXCEPT SELECT created_at FROM clients;
| |
− | created_at
| |
− | ----------------------------
| |
− | 2022-11-20 11:38:24.975644
| |
− | 2021-10-09 17:50:13.19454
| |
− | 2022-11-18 18:24:26.100683
| |
− | 2022-12-02 14:31:59.651794
| |
− | 2020-01-05 16:08:24.725981
| |
− | 2022-10-13 18:18:47.00945
| |
− | 2022-10-16 12:13:27.960598
| |
− | 2022-09-19 17:04:20.793626
| |
− | 2022-10-14 21:58:23.012871
| |
− | 2022-09-26 18:41:40.679061
| |
− | (10 rows)</nowiki>
| |
− |
| |
− | update_dump=# select * from clients_new where created_at > '2022-09-19';
| |
− |
| |
− | 書き出す
| |
− | % psql -d update_dump -U jq -c "select * from clients_new where created_at > '2022-09-19'" -F, > ../clients_add.csv
| |
− |
| |
− | 増分をインサートする
| |
− | <nowiki>tep5_development=# INSERT INTO clients (id, user_id, note_id, list_id, content, created_at, updated_at) VALUES
| |
− | (35375,2,3,1,'支所','2022-11-18 18:24:26.100683','2022-11-18 18:24:26.108051'),
| |
− | (5360,2,1,1,'広島門会','2022-10-13 18:18:47.00945 ','2022-10-13 18:18:47.023412'),
| |
− | .
| |
− | .
| |
− | .
| |
− | (25362,13,2,1,'岡山族会','2022-10-16 12:13:27.960598','2022-10-16 12:13:27.968872');
| |
− | INSERT 0 7</nowiki>
| |
− |
| |
− | ここまでのバックアップを取る
| |
− | % pg_dump -Fc tep5_development > ../202212151515.dump
| |
− |
| |
− | ==== 2022-12 -14 othersテーブル ====
| |
− | 09-15以降の増分を取る nusiがfalseのもの
| |
− | % psql -d update_dump -U jq -c "select id, user_id, jiin_id, ie_id, name, yomi, nusi, each_order, memo, generation, created_at, updated_at from clients_old where created_at > '2022-09-15' and nusi = false" -A -F, > ../others_add.csv
| |
− |
| |
− | nusiがtrueのもの 両方必要
| |
− | % psql -d update_dump -U jq -c "select id, user_id, jiin_id, ie_id, name, yomi, nusi, each_order, memo, generation, created_at, updated_at from clients_old where created_at > '2022-09-15' and nusi = true" -A -F, > ../others_nusi_add.csv
| |
− |
| |
− | コピーコマンドで追加ができる
| |
− | memoの改行削除が必要 vim中でcontrol+v control+mで^Mが入力できる :%s/^M//gc
| |
− |
| |
− | =# \COPY others FROM '../others_add.csv' DELIMITER ',' CSV HEADER;
| |
− |
| |
− | <nowiki>=# \COPY others FROM '../others_nusi_add.csv' DELIMITER ',' CSV HEADER;
| |
− | COPY 8</nowiki>
| |
− |
| |
− | ここまでのバックアップを取る
| |
− | % pg_dump -Fc tep5_development > ../202212151649.dump
| |
| | | |
| ==== 旧clientsテーブルをリストアする ==== | | ==== 旧clientsテーブルをリストアする ==== |
537行目: |
406行目: |
| | | |
| === placesテーブル === | | === placesテーブル === |
− | ==== 12-16 ====
| |
− | 確認
| |
− | <nowiki>latest_dump=# select count(*) from places;
| |
− | count
| |
− | -------
| |
− | 921</nowiki>
| |
− |
| |
− | =# select * from places where created_at > '2022-09-15';
| |
− |
| |
− | 増分書き出し
| |
− | % psql -d latest_dump -U jq -c "select id, user_id, jiin_id, ie_id, zip, ken, city, etc, flag, created_at, updated_at from places where created_at > '2022-09-15'" -A -F, > ../places_add.csv
| |
− |
| |
− | places_add.csv memo列を,で作る client_id(ie_id)の桁数を調整する
| |
− |
| |
− | コピーで追加
| |
− | =# \COPY places FROM '../places_add.csv' DELIMITER ',' CSV HEADER;
| |
− |
| |
− | ここまでのバックアップを取る
| |
− | % pg_dump -Fc tep5_development > ../202212160911.dump
| |
− |
| |
− | ==== 以前 ====
| |
| 確認 | | 確認 |
| <nowiki>heroku_dump=# select count(*) from places; | | <nowiki>heroku_dump=# select count(*) from places; |
568行目: |
416行目: |
| dump | | dump |
| % pg_dump --username=jq --table places_old heroku_dump > places_old.sql | | % pg_dump --username=jq --table places_old heroku_dump > places_old.sql |
− |
| |
| ==== 新データベースにリストア ==== | | ==== 新データベースにリストア ==== |
| <nowiki>% psql --username=jq tep5_development < ../places_old.sql | | <nowiki>% psql --username=jq tep5_development < ../places_old.sql |
621行目: |
468行目: |
| INSERT 0 918</nowiki> | | INSERT 0 918</nowiki> |
| | | |
− | generate | + | ==== generate ==== |
| % rails generate scaffold Place user:references note:references client:references zip:string ken:string city:string etc:string flag:boolean memo:text | | % rails generate scaffold Place user:references note:references client:references zip:string ken:string city:string etc:string flag:boolean memo:text |
| | | |
665行目: |
512行目: |
| | | |
| === schedulesテーブル === | | === schedulesテーブル === |
− | ==== 12-16 ====
| |
− | 確認
| |
− | <nowiki>=# select count(*) from schedules;
| |
− | count
| |
− | -------
| |
− | 3716
| |
− | </nowiki>
| |
− |
| |
− | <nowiki>=# select count(*) from schedules;
| |
− | count
| |
− | -------
| |
− | 4026
| |
− | </nowiki>
| |
− |
| |
− | 書き出し jiin_id(note_id)変更のため並べ変える
| |
− | % psql -d latest_dump -U jq -c "select id, user_id, jiin_id, ie_id, datetime, content, client_id, every_year, goji, created_at, updated_at from schedules where created_at >= '2022-09-13' order by jiin_id" -A -F, > ../schedules_add.csv
| |
− |
| |
− | ../schedules_add.csv vimで修正する
| |
− | jiin_id(note_id)2,3,4はそれぞれ20000,30000,40000を足す gojiは修正する :%s/,f,f/,f,/gc
| |
− |
| |
− | copyで追加
| |
− | =# \COPY schedules FROM '../schedules_add.csv' DELIMITER ',' CSV HEADER;
| |
− |
| |
− | ここまでのバックアップを取る
| |
− | % pg_dump -Fc tep5_development > ../202212161430.dump
| |
− |
| |
− | ==== 以前 ====
| |
| 確認 | | 確認 |
| <nowiki>heroku_dump=# select count(*) from schedules; | | <nowiki>heroku_dump=# select count(*) from schedules; |
901行目: |
721行目: |
| | | |
| === 仕訳帳テーブル === | | === 仕訳帳テーブル === |
− | ==== 12-16 17:18 ====
| |
− | 確認
| |
− | <nowiki>latest_dump=# select count(*) from journals;
| |
− | count
| |
− | -------
| |
− | 14885</nowiki>
| |
− |
| |
− | 最新をテーブルダンプする
| |
− | % pg_dump --username=jq --table journals latest_dump > ../update_journals.sql
| |
− |
| |
− | update_dumpデータベースにリストアする
| |
− | <nowiki>% psql --username=jq update_dump < ../update_journals.sql
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | set_config
| |
− | ------------
| |
− |
| |
− | (1 row)
| |
− |
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | CREATE TABLE
| |
− | ALTER TABLE
| |
− | CREATE SEQUENCE
| |
− | ALTER TABLE
| |
− | ALTER SEQUENCE
| |
− | ALTER TABLE
| |
− | COPY 14885</nowiki>
| |
− |
| |
− | update_dump=# ALTER TABLE journals RENAME COLUMN client_id TO other_id;
| |
− | ALTER TABLE
| |
− |
| |
− | update_dump=# ALTER TABLE journals ADD COLUMN client_id integer;
| |
− | ALTER TABLE
| |
− |
| |
− | update_dump=# ALTER TABLE journals RENAME COLUMN jiin_id TO note_id;
| |
− | ALTER TABLE
| |
− |
| |
− | =# update journals set account_id = 99 where account_id is null;
| |
− | UPDATE 10379
| |
− |
| |
− | % pg_dump -t journals update_dump > ../journals_latest.sql
| |
− |
| |
− | <nowiki>tep5_development=# delete from journals ;
| |
− | DELETE 14719
| |
− | tep5_development=# TRUNCATE TABLE journals RESTART IDENTITY;
| |
− | TRUNCATE TABLE
| |
− | tep5_development=# select * from journals_id_seq ;
| |
− | last_value | log_cnt | is_called
| |
− | ------------+---------+-----------
| |
− | 1 | 0 | f</nowiki>
| |
− |
| |
− | <nowiki>% psql --username=jq tep5_development < ../journals_latest.sql
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | set_config
| |
− | ------------
| |
− |
| |
− | (1 row)
| |
− |
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | SET
| |
− | ERROR: relation "journals" already exists
| |
− | ALTER TABLE
| |
− | ERROR: relation "journals_id_seq" already exists
| |
− | ALTER TABLE
| |
− | ALTER SEQUENCE
| |
− | ALTER TABLE
| |
− | COPY 14885
| |
− | setval
| |
− | --------
| |
− | 15199
| |
− | (1 row)
| |
− |
| |
− | ERROR: multiple primary keys for table "journals" are not allowed
| |
− | ERROR: relation "index_journals_on_account_id" already exists
| |
− | ERROR: relation "index_journals_on_credit_and_credit_money_and_account_id" already exists
| |
− | ERROR: relation "index_journals_on_credit_s" already exists
| |
− | ERROR: relation "index_journals_on_debit_and_client_id_and_debit_money" already exists
| |
− | ERROR: relation "index_journals_on_debit_s" already exists
| |
− | ERROR: relation "index_journals_on_description_id_and_schedule_id" already exists
| |
− | ERROR: relation "index_journals_on_jiin_id" already exists
| |
− | ERROR: relation "index_journals_on_user_id" already exists
| |
− | ERROR: relation "index_journals_on_user_id_and_jiin_id_and_journal_number" already exists</nowiki>
| |
− |
| |
− | ここまでのバックアップを取る
| |
− | % pg_dump -Fc tep5_development > ../202212170834.dump
| |
− |
| |
− | ==== 以前 ====
| |
| 確認 | | 確認 |
| <nowiki>=# select count(*) from journals; | | <nowiki>=# select count(*) from journals; |
1,163行目: |
880行目: |
| | | |
| === 戒名テーブル 変更あり === | | === 戒名テーブル 変更あり === |
− | ==== 12-17 11:14 ====
| |
− | 確認
| |
− | <nowiki>latest_dump=# select count(*) from kaimyous;
| |
− | count
| |
− | -------
| |
− | 3445</nowiki>
| |
− |
| |
− | 増分を書き出す
| |
− | % psql -d latest_dump -U jq -c "select id, user_id, jiin_id, ie_id, client_id, content, date, g_age, relationship, ie_id_v, created_at, updated_at from kaimyous where created_at >= '2022-09-13' order by jiin_id" -A -F, > ../kaimyous_add.csv
| |
− |
| |
− | ie_id(client_id)は修正する ie_id_vはmemoに対応するために書き出した
| |
− |
| |
− | コピーで追加
| |
− | <nowiki>=# \COPY kaimyous FROM '../kaimyous_add.csv' DELIMITER ',' CSV HEADER;
| |
− | COPY 70</nowiki>
| |
− |
| |
− | ==== 以前 ====
| |
| 確認 | | 確認 |
| <nowiki>heroku_dump=# select count(*) from kaimyous; | | <nowiki>heroku_dump=# select count(*) from kaimyous; |
1,431行目: |
1,131行目: |
| バックアップを取る -Fc カスタム形式 圧縮ファイル形式 | | バックアップを取る -Fc カスタム形式 圧縮ファイル形式 |
| % pg_dump -Fc tep5_development > ../202212141027.dump | | % pg_dump -Fc tep5_development > ../202212141027.dump |
− |
| |
− | == house_note ==
| |
− | 旧データベースからダンプ
| |
− | % pg_dump --username=jq --table house_notes latest_dump > ../hns.sql
| |
− |
| |
− | サーバーへ転送
| |
− | % rsync -r --delete --exclude-from='exclude-file.txt' ~/rails_app_tepnote/hns.sql jq:/home/jq/dump_data
| |
− |
| |
− | リストア
| |
− | $ psql update_dump < ../hns.sql
| |
− |
| |
− | clientsのidとhouse_noteのidをあわせる
| |
− | <nowiki>tep5_production=# update house_notes SET ie_id = ie_id + 20000 where jiin_id = 2;
| |
− | UPDATE 30
| |
− | tep5_production=# update house_notes SET ie_id = ie_id + 30000 where jiin_id = 3;
| |
− | UPDATE 114
| |
− | tep5_production=# update house_notes SET ie_id = ie_id + 40000 where jiin_id = 4;
| |
− | UPDATE 25</nowiki>
| |
− |
| |
− | セレクトしてアップデートする
| |
− | tep5_production=# UPDATE clients as Cl SET memo = (SELECT content FROM house_notes as Hn WHERE Hn.ie_id = Cl.id);
| |
− |
| |
− | 削除
| |
− | =# drop table house_notes ;
| |
| | | |
| == UUIDを有効にする == | | == UUIDを有効にする == |
1,531行目: |
1,207行目: |
| | | |
| $ rails generate scaffold Post content:text user:references picture:string | | $ rails generate scaffold Post content:text user:references picture:string |
− |
| |
− | $ rails generate scaffold Post user:references title:string content:text notification_time:datetime reminder_type:integer post_type:integer picture:string
| |
| | | |
| $ rails generate model Relationship follower_id:integer followed_id:integer | | $ rails generate model Relationship follower_id:integer followed_id:integer |
1,547行目: |
1,221行目: |
| config/envitonments/production.rb | | config/envitonments/production.rb |
| config.assets.compile = true | | config.assets.compile = true |
− |
| |
− | === カラム追加 ===
| |
− | <nowiki>% rails generate migration add_memo_to_schedules memo:text
| |
− | invoke active_record
| |
− | create db/migrate/20230311013341_add_memo_to_schedules.rb
| |
− | % rails db:migrate
| |
− | == 20230311013341 AddMemoToSchedules: migrating ===============================
| |
− | -- add_column(:schedules, :memo, :text)
| |
− | -> 0.0056s
| |
− | == 20230311013341 AddMemoToSchedules: migrated (0.0057s) ======================</nowiki>
| |
− |
| |
− | === 外部キー制約に変更 ===
| |
− | rails generate migration AddScheduleReferenceToJournal schedule:references
| |
| | | |
| == サーバーへ転送 == | | == サーバーへ転送 == |
1,567行目: |
1,228行目: |
| database.yml</nowiki> | | database.yml</nowiki> |
| | | |
− | すべて
| |
| % rsync -r --delete --exclude-from='exclude-file.txt' ~/rails_app_tepnote/tep5/ jq:/home/jq/tep5/ | | % rsync -r --delete --exclude-from='exclude-file.txt' ~/rails_app_tepnote/tep5/ jq:/home/jq/tep5/ |
| | | |
− | appのみ
| + | % rsync ~/rails_app_tepnote/202210031034_tep5.sql jq:/home/jq/dump_data |
− | % rsync -r --delete --exclude-from='exclude-file.txt' ~/rails_app_tepnote/tep5/app/ jq:/home/jq/tep5/app/
| |
− | | |
− | データベース
| |
− | % rsync ~/rails_app_tepnote/202212170834.dump jq:/home/jq/dump_data | |
| | | |
| == サーバー側 == | | == サーバー側 == |
− | リストア
| |
− | $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U jq -d tep5_ production ../dump_data/202212141027.dump
| |
− |
| |
| $ bundle install --without test development | | $ bundle install --without test development |
| | | |
1,587行目: |
1,240行目: |
| | | |
| データベース削除 | | データベース削除 |
− | ~$ dropdb tep5_production
| |
− | または
| |
| postgres=# DROP DATABASE tep5_production; | | postgres=# DROP DATABASE tep5_production; |
| | | |
1,663行目: |
1,314行目: |
| | | |
| $ rails db:migrate RAILS_ENV=production | | $ rails db:migrate RAILS_ENV=production |
− |
| |
− | === シーケンス操作 ===
| |
− | 確認
| |
− | <nowiki>=# select * from others_id_seq ;
| |
− | last_value | log_cnt | is_called
| |
− | ------------+---------+-----------
| |
− | 14 | 30 | t</nowiki>
| |
− |
| |
− | 最大値確認
| |
− | <nowiki>=# select max(id) from others;
| |
− | max
| |
− | ------
| |
− | 5428</nowiki>
| |
− |
| |
− | 変更
| |
− | <nowiki>=# SELECT setval('others_id_seq', 5428, true);
| |
− | setval
| |
− | --------
| |
− | 5428</nowiki>
| |
− |
| |
− | === バックアップ ===
| |
− | dump
| |
− | $ pg_dump -Fc tep5_production > ~/dump_data/202212180817.dump
| |
− |
| |
− | ローカル側からコピーして二箇所で保存する
| |
− | % scp jq:/home/jq/dump_data/202212180817.dump /Users/jq/rails_app_tepnote
| |
− |
| |
− | == データベース変更 ==
| |
− | === まるごと ===
| |
− | ダンプ 本番データベースバックアップ データのみ
| |
− | $ pg_dump -a tep5_production > ~/dump_data/202212270953_data_only.sql
| |
− |
| |
− | ローカルからコピー
| |
− | % scp jq:/home/jq/dump_data/202212270953_data_only.sql /Users/jq/rails_app_tepnote
| |
− |
| |
− | ローカルデータベース削除
| |
− | % rails db:drop
| |
− |
| |
− | データベース作成
| |
− | % rails db:create
| |
− |
| |
− | マイグレーション変更
| |
− |
| |
− | マイグレーション
| |
− | % rails db:migrate
| |
− |
| |
− | リストア
| |
− | % psql --username=jq tep5_development < ../202212270953_data_only.sql
| |
− |
| |
− | === カラム追加 boolean ===
| |
− | % rails generate migration add_payment_to_descriptions payment:boolean
| |
− |
| |
− | add_column :descriptions, :payment, :boolean, default: false
| |
− |
| |
− | $ rails db:migrate
| |
− |
| |
− | === あとから外部キー制約を追加する手順 ===
| |
− | 親テーブルと子テーブルのIDを比較する 不整合があればテーブルを修正する
| |
− | <nowiki>=# SELECT id FROM others
| |
− | EXCEPT
| |
− | SELECT other_id FROM journals
| |
− | UNION ALL
| |
− | SELECT other_id FROM journals
| |
− | EXCEPT
| |
− | SELECT id FROM others order by id;
| |
− | id
| |
− | ------
| |
− | 2435</nowiki>
| |
− |
| |
− | 外部キー制約を追加するmigration ファイルをつくる
| |
− | <nowiki> % rails generate migration AddClientReferenceToJournal client:references
| |
− | invoke active_record
| |
− | create db/migrate/20230509044227_add_client_reference_to_journal.rb
| |
− | % rails generate migration AddOtherReferenceToJournal other:references
| |
− | invoke active_record
| |
− | create db/migrate/20230509044353_add_other_reference_to_journal.rb</nowiki>
| |
− |
| |
− | rails db:migrateでエラー
| |
− |
| |
− | すでにother_idカラムが存在するのでadd_referenceメソッドが実行できない
| |
− |
| |
− | 直接データベースを操作してother_idカラム名をhoge_idカラム名に変更する
| |
− |
| |
− | ALTER TABLE journals RENAME COLUMN other_id TO hoge_id;
| |
− |
| |
− | rails db:migrate
| |
− |
| |
− | hoge_idカラムの値をother_idカラムにコピーする
| |
− | UPDATE journals SET other_id = hoge_id;
| |
− |
| |
− | ローカルならrails consoleを使用して
| |
− |
| |
− | Journal.update_all('other_id = hoge_id')
| |
− |
| |
− | hoge_idを削除する
| |
− | ALTER TABLE journals DROP COLUMN hoge_id;
| |
− |
| |
− | === エラー ===
| |
− | 例えば待避したhoge_idを戻すとき次のようなエラーがでる
| |
− | <nowiki>=# UPDATE journals SET schedule_id = hoge_id;
| |
− | ERROR: insert or update on table "journals" violates foreign key constraint "fk_rails_9d4d4268db"
| |
− | DETAIL: Key (schedule_id)=(970) is not present in table "schedules".</nowiki>
| |
− | journalsテーブルのschedule_idがschedulesテーブルにないのでそれを拾い出して削除する
| |
− | <nowiki>=# delete from journals where hoge_id in (
| |
− | SELECT id FROM schedules
| |
− | EXCEPT
| |
− | SELECT hoge_id FROM journals
| |
− | UNION ALL
| |
− | SELECT hoge_id FROM journals
| |
− | EXCEPT
| |
− | SELECT id FROM schedules);</nowiki>
| |
− |
| |
− | == gemアップデート ==
| |
− | 確認
| |
− | % gem -v
| |
− | アップデート対象Gemを一覧表示
| |
− | % bundle outdated
| |
− |
| |
− | == 備忘 ==
| |
− | 現在UUIDコメントアウト中 config/initializers/generators.rb
| |