表の列のデータ型を変更する SQL ORACLE

環境

  • Windows10

  • Oracle12c

  • SQL*Plus

目標

表の列を削除して追加する

プライマリキーはVARCHAR2で良かったのにNUMBERにしてました。 変更します。

列のデータ型を変更する構文

ALTER TABLE 表名 MODIFY (列名[データ型] [DEFAULT 式] [,列名 [データ型] [DEFAUlT 式]…]);

SQL*Plusで実行する

SQL> DESC CATM;
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 CATCD                                     NOT NULL NUMBER(4)
 NAME                                               VARCHAR2(10)
 GENDER                                             VARCHAR2(1)

SQL> ALTER TABlE CATM
  2  MODIFY(CATCD VARCHAR2(4));
MODIFY(CATCD VARCHAR2(4))
       *
行2でエラーが発生しました。:
ORA-01439: データ型を変更するには、修正する列を空にする必要があります

列を空にしないと消えないとのことなので空にします。

行を削除する構文

DELETE [FROM] 表名 [WHERE 条件];

SQL*Plusで実行する

SQL> SELECT * FROM CATM;

     CATCD NAME       G
---------- ---------- -
         1 アメショ   1

SQL> DELETE FROM CATM WHERE CATCD = 1;

1行が削除されました。

SQL> SELECT * FROM CATM;

レコードが選択されませんでした。

もう一回データ型変更を実行します。

SQL> DESC CATM;
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 CATCD                                     NOT NULL NUMBER(4)
 NAME                                               VARCHAR2(10)
 GENDER                                             VARCHAR2(1)

SQL> ALTER TABlE CATM
  2  MODIFY(CATCD VARCHAR2(4));

表が変更されました。

SQL> DESC CATM;
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 CATCD                                     NOT NULL VARCHAR2(4)
 NAME                                               VARCHAR2(10)
 GENDER                                             VARCHAR2(1)

終わりです。

表にデータを追加するSQL ORACLE

環境

  • Windows10

  • Oracle12c

  • SQL*Plus

目標

表にデータをINSERT文で追加する

INSERT文の基本構文

INSERT INTO 表明 [(列名1[,列名2…])] VALUES (値1[,値2…]);

SQL*Plusで実行する

SQL> INSERT INTO CATM(CATCD, NAME, GENDER)
  2  VALUES(0001,'アメショ', '1');

1行が作成されました。

SQL>  SELECT * FROM CATM;

     CATCD NAME       GENDER
---------- ---------- ------
         1 アメショ   1

終わりです。

表を作成する SQL,ORACLE

取り合えず書きます。

環境

  • Windows10

  • Oracle12c

  • SQL*Plus

CLEATE TABLE文の基本構文

CREATE TABLE [スキーマ名].表明
(
    列名 データ型
    [,列名 データ型 …]
);

SQL*Plusで実行する。

sqlplus起動方法
  1. 左下の検索バーに「コマンドプロンプト」と入力、選んで起動 sqlplusと入力してEnter

  2. ユーザ名を入力してください:〇〇〇 入力してEnter

  3. パスワードを入力してください:〇〇〇〇 入力してEnter

PRIMARY KEY制約(主キー制約) 先頭に一意のキーを設定します。

CREATE TABLE CATM
(
    CATCD NUMBER(4) CONSTRAINT CATM_CATCD_pk PRIMARY KEY,
    NAME VARCHAR2(10),
    GENDER VARCHAR2(1)
);
表が作成されました。


SQL> DESC CATM;
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 CATCD                                     NOT NULL NUMBER(4)
 NAME                                               VARCHAR2(10)
 GENDER                                             VARCHAR2(1)

SQL>

終わりです。

githubからlaravelプロジェクトをダウンロードしてlaradock,docker,composerで構築する方法

  • macOS Big Sur 11.1

  • PHP 7.3.11


  • Laravel Framework 6.20.7


  • vue 2.6.12


  • Visual Studio Code 1.52

  • Docker 20.10.0

  • Composer 2.0.8


先日CLIを更新しようとしたらsudo rm-rf/関連のコマンドを間違えました。すごい勢いで色々なデータが削除されてmacが動かなくなりました。セーフモードも出来なくなりました。初めてappleのチャットサポートに相談したら、option+command+Rを提案して下さって修理依頼しなくてもOS再ダウンロードできました。

自分で作ってgithubにあげたアプリを再構築することがなかなか出来ませんでした。そもそも作っている時からlaradockフォルダやlaravelフォルダが複数個になったりしておりました。今回まともに構築できたような気がするのでファイル構成を書いておきたくなりました。

ツリー化にあたってこちらを利用しました。 https://codogue.com/asciitree/

original-app
├ data/postgres
├ laradock
│    ├ docker
│     ├ .env
│     ├ .gitignore
│     ├ docker-compose.yml
│     └ env-example
└ laravel
      ├ app
      ├ bootstrap
      ├ config
      ├ database
      ├ node_modules
      ├ public
      ├ resources
      ├ routes
      ├ storage
      ├ tests
      ├ vender
      ├ .editorconfig
      ├ .env
      ├ .env.example
      ├ .gitattributes
      ├ .gitignore
      ├ .styleci.yml
      ├ artisan
      ├ composer.json
      ├ composer.lock
      ├ package-lock.json
      ├ package.json
      ├ phpunit.xml
      ├ Procfile
      ├ README.md
      ├ sever.php
      └ webpack.mix.js

構築方法

#DockerDesktopインストール
#Composerインストール
% mkdir original-app
% cd original-app
original-app % mkdir laravel
original-app % cd laravel
#URLは欲しいリポジトリのgit
laravel % git clone https://github.com/***/***.git
laravel % cp env-example .env
#VisualStudioCodeで開いて.envファイルの編集 例、APP_NAME=original-app,DB_CONNECTION=pgsql,DB_HOST=postgres,DB_PORT=5432,DB_DATABASE=originalapp
laravel % cd ../
original-app % git clone https://github.com/Laradock/laradock.git laradock
original-app % cd laradock
laradock % cp env-example .env
#VisualStudioCodeで開いて.envファイルの編集 例、 APP_CODE_PATH_HOST=../laravel,DATA_PATH_HOST=../data,COMPOSE_PROJECT_NAME=originalapp
laradock % cd ../
original-app % cd laravel
laravel % composer install
laravel % php artisan key:generate
laravel % cd ../
original-app % cd laradock
laradock %  docker-compose up -d workspace php-fpm nginx postgres 
#以下のようになればOK
#Recreating original-app_php-fpm_1   ... done
#Recreating original-app_workspace_1 ... done
#Recreating original-app_postgres_1  ... done
#Recreating original-app_nginx_1     ... done
laradock %  docker-compose exec workspace psql -U default -h postgres
#secretと入力
default=# create database originalapp;
#CREATE DATABASEと出ればOK
default=# \q
laradock % docker-compose exec workspace php artisan migrate
laradock % docker-compose exec workspace npm install
#ローカル環境のブラウザにてhttp://localhost:80へアクセス

MaaS/国土交通省に選ばれた38事業の関連してそうなアプリをできる範囲で開いてみた

MaaSとは 「Mobility as a Service」の略で、マースと読む。直訳すると「サービスとしてのモビリティ」で、移動のサービス化を意味する。とのことです。

jidounten-lab.com

www.mlit.go.jp

国土交通省では、地域の課題解決に資するMaaSのモデル構築を図る「日本版MaaS推進・支援事業」について、 4月17日~6月30日にかけて公募を行い、有識者の意見も踏まえ、交通以外の分野と連携し、 地域課題の解決に寄与することが見込まれ、新たなMaaSのモデルとなり得る38事業を選定しました。

こちらの別紙に載ってる名前のわかりそうなアプリをかたっぱしからダウンロードして触ってみました。 内容については申請時の情報であり変更の可能性があるそうです。アプリも変更予定があると思います。国に認められるっていう時点で凄いことなので色々触れるだけ触ってみたくなりました。

f:id:shifonnu:20201109232700p:plain
国土交通省HPより

about.samurai.ms

操作がシンプルでわかりやすく感じました。のれま〜すチケットがあるのですが、乗れますとMaaSをかけたんだな、一生懸命考えたんだろうなと親しみを覚えました。チケットの詳細がわかるので安心して買える印象がありました。これから色々実装されるんだろうなという感じでした。

f:id:shifonnu:20201109232851p:plain
国土交通省HPより

www.japan-travelguide-connect.jp

情報量がとても多かったです。家の近くの陶芸やガラス工芸などのイベントを知れて得した気持ちになりました。大谷地域のページがしっかりアピールされてました。ページのデザインがおしゃれな見た目なのですがもう少し文字の位置がまとまってると見やすいなと思いました。

f:id:shifonnu:20201109232946p:plain
国土交通省HPより

youtu.be

こちらは動画だったのですがなるほど便利だな!と思いました。障害がある人の世界を考えた事があまりなかったです。スタッフ全員が把握できてスピーディーに淡々とサポートできると気楽に移動できるようになれそうだなと思いました。

f:id:shifonnu:20201109233039p:plain
国土交通省HPより

www.emot.jp

デザインが全体的に大変おしゃれで見やすいです。チケットの意味もわかりやすいです。安心して利用できそうなイメージです。タクシーの予約もすぐできそうでした。観光地の見所も知れたら満足度高そうだなと思いました。

f:id:shifonnu:20201109233137p:plain
国土交通省HPより

www.izuko.info

2020年11月16日〜2021年3月31日までで、まだ開始してませんでしたが静岡育ちなので載せました。

ニュースリリース(2020年)|東急株式会社
観光型MaaS「Izuko」Phase3の詳細について

以下はPhase2の時に利用された方のお話ですがかなり機能的な感じです。

tetsudo-shimbun.com

f:id:shifonnu:20201109233504p:plain
国土交通省HPより

www.kotsu.town.komono.mie.jp

ログインしなくても操作できるのが自由度が高く感じました。単純な大きいボタンで使いやすい印象がありました。

f:id:shifonnu:20201109233610p:plain
国土交通省HPより

www.youtube.com

こちらも動画のみです。オムロンもアプリを作ってるんだなあと思いました。自分が年寄りになった時のことを考えたら、こういう助けるサービスも必要になってくるのかなと感じました。

f:id:shifonnu:20201109233703p:plain
国土交通省HPより

www.mobiry.jp

アプリの画面遷移のスピードが異様に早く感じました。なんででしょう。チケットが一つに集まっているのでこれから観光する時に利用したらとてもわかりやすいなと思いました。

f:id:shifonnu:20201109233817p:plain
国土交通省HPより

horai.sv

瀬戸内のアート情報がすぐわかります。複数行きたいところを選んで移動プランを作ってくれます。写真見てるだけで若干旅行気分になりました。交通チケットシステムももし導入できたら便利そうだなと思いました。2カ所以上選んでプランを作るという操作が初見だとわかりにくかったです。しかしHPの説明読んだらわかりました。

f:id:shifonnu:20201109233928p:plain
国土交通省HPより

f:id:shifonnu:20201109233952p:plain
国土交通省HPより

www.myroute.fun

トヨタグループのMaaSアプリです。 手堅く移動経路を複合的に教えてくれます。案内が電車よりにならないところがさすが車の会社って感じがしました。 ぱっと見こじんまりした感じですがクーポンもあるし車も借りれるし旅の案内もあるしなんでも揃ってる感じです。

感想

どこも一生懸命考えて作ったサービスなんだろうなと熱意を感じました。MaaSは複数の情報を扱うので、それぞれの情報に特化した媒体が串刺しになったら強いサービスになるなと思いました。アプリを作る側だとログイン機能が必須なのですが、利用する方だとログインしなくてもある程度あそべるサービスが好感度高かったです。皆さん結果出るようにお体大事にして頑張っていただきたいと思いました。

最後まで読んでいただいてありがとうございます。

Rails/エラー文の英語表記を日本語化する〜gem 'rails-i18n’,devise.ja.yml使用〜

動作環境

  • macOS Catalinaバージョン10.15.6

  • Rails 6.0.3.3

  • ruby 2.6.5

  • device導入

  • EC2環境にアップロード済

スクール課題のフリマアプリのエラー文の英文を日本語文に変更しました。

config/application.rbに以下を追記

config.i18n.default_locale = :ja

Gemfileに以下を追記

gem 'rails-i18n'

ターミナルにてbundle installを実行

config/localesにファイルdevise.ja.ymlを作成

こちらの内容を貼り付け
devise-i18n/ja.yml at master · tigrish/devise-i18n · GitHub

config/localesにファイルja.ymlを作成して以下を記入

ja:
  activerecord:
    models: 
      item: "商品"
    attributes:
      item:
        price: 値段

これで変換し切れていないitemモデルの「price」というキーワードの翻訳ができました。

詰まったことが2つあり、1つは下記のタイプのモデルの場合の指定方法です。2つのモデルをまとめる記述になっており、既存の指定方法では通らないのだろうなと思い検索して調べました。

app/models/hoge_piyo.rb

class HogePiyo
  include ActiveModel::Model
  attr_accessor  :name

こちらの記事を参考にさせて頂きました。
Rails Module::Class の要素に対する i18n の書き方 - Qiita

config/locales/ja.yml

  activemodel:
    models: 
      hoge_piyo: “ホゲピヨ”
    attributes:
      hoge_piyo:
       name: 名前

activemodel:という表記で指定できることがわかりました。

また、こちらの記事でインデント(2スペース)でpathを制御していることを学び全体調整しました。
[初学者]Railsのi18nによる日本語化対応 - Qiita

これでエラー文の日本語表記ができました。
もう一つの詰まった部分が自動デプロイをしても本番環境で反映されなかった所です。

こちらの記事を参考にさせて頂きました。
新しく国際化ファイルを追加した時は spring を再起動してやらないと rails console に反映されない - Qiita

サーバーの再起動をしないと反映されないという記事を上記の記事以外にも何件か見ましたので、本番環境でも自動デプロイだけでなく、サーバーの再起動が必要なのだなと感じました。

EC2内にて
※データベース起動確認 active (mariadb)ならok

$[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl status mariadb
$[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ps aux | grep unicorn
$[ec2-user@ip-172-31-23-189 <リポジトリ名>]$kill プロセスID番号(PID)
$[ec2-user@ip-172-31-23-189 <リポジトリ名>] $RAILS_SERVE_STATIC_FILES=1 $unicorn_rails -c  /var/www/<リポジトリ名>/current/config/unicorn.rb -E production -D

EC2インスタンスの再起動後は、必ず「データベース」「Nginx」の再起動も行いましょう。

[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl restart mariadb
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl restart nginx

これで本番環境でもエラー文の日本語が表示されるようになりました。

最後まで読んで頂いてありがとうございます。

zsh: command not found: herokuエラーが出た話

動作環境

2台パソコンを持っていたのでずっとデスクトップで作業しており、 ノートパソコンで作業してみてheroku config したところ以下のエラーが出ました。

$ heroku config
zsh: command not found: heroku

ログインも出来ませんでした。

$ heroku login --interactive
zsh: command not found: heroku

herokuがインストールされてない可能性があるかなと思いインストール。

$  brew tap heroku/brew && brew install heroku

ログインできるようになりました。

 $ heroku login --interactive
 ›   Warning: Our terms of service have changed: 
 ›   https://dashboard.heroku.com/terms-of-service
heroku: Enter your login credentials
Email:

heroku config できず。

 $ heroku config             
 ›   Error: Missing required flag:
 ›     -a, --app APP  app to run command against
 ›   See more help with --help

heroku -vはできたのでherokuインストール自体はOKのよう。

heroku -v
heroku/7.46.2 darwin-x64 node-v12.16.2

herokuとアプリを紐付け。

 $ heroku git:remote -a closed-app
set git remote heroku to https://git.heroku.com/closed-app.git

これでheroku configができるようになりました。

参考ページ macos - zsh: command not found: heruko - How to get up and running with Heroku CLI on Mac Catalina? - Stack Overflow

[Herokuエラー]Error: Missing required flagが出た - Qiita