setup.sql について

この質問の投稿一覧へ

なし setup.sql について

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2019-6-3 16:49
hisaking  新米   投稿数: 2
VARCHAR2 の指定が不足しておりデータのインポートができなかったのでご報告させていただきます。

・事象
====
本問題集のSQL文を実行する為のテーブル等は、以下の3つのSQLファイルを順に実行する事で作成できます。但し、個人的に構築した検証環境で実行して下さい。本番環境や、それに準じる環境で実行した場合、既存のデータを壊す可能性があります。
1. 管理者で>createUser.sqlを実行。→pingtとuserAの2ユーザー(パスワード:oracle)を作成 2. pingtユーザで>setup.sqlを実行。 3. userAユーザで>setupByUserA.sqlを実行。
====
上記を元に理解度を深めるために Oracle DB を構築して実行してみたところ、
setup.sql の実行時にいくつかエラーが発生して正しく DB を作ることができませんでした。

例えば employees テーブルが(確か) 2件しかデータが入りませんでした。

・実施した対応
エラー内容を見たところ、employee_name の文字数オーバーなどが表示されていたため、
=====元データ=====
CREATE TABLE employees
(employee_id NUMBER(4) CONSTRAINT pk_emp PRIMARY KEY,
employee_name VARCHAR2(10),
=====編集後=====
CREATE TABLE employees
(employee_id NUMBER(4) CONSTRAINT pk_emp PRIMARY KEY,
employee_name VARCHAR2(40), ★ここを編集
============
のように直したところ、少しデータが増加することを確認しました。


・原因(推測ですが)
VARCHAR2 の文字数制限を超過していた理由は、おそらくこちらの環境で
UTF を使用していたため、日本語が1文字4バイトで計算されているのではないかと思われます。

上記以外も VARCHAR2 の値をすべて2倍にしたところ、エラー無くデータが入ることを確認しました。


・依頼内容
DB のキャラクタセット側に起因する内容ですのでこちら側の問題ではあるのですが、
こういったこともありますので、VARCHAR2 で指定しているサイズを見直してもらえると助かります。

投稿ツリー

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.