MySQL の列エラーでデータが切り捨てられる問題を修正

Mehvish Ashiq 2023年6月20日
MySQL の列エラーでデータが切り捨てられる問題を修正

この記事では、MySQL で列のデータが切り捨てられましたというエラーの考えられる理由と解決策を示します。

MySQL の Data is Truncated for a Column エラーを修正

ここでは、MySQL data is truncated for a column というエラーを取り除くために考えられる理由と解決策を探ります。

データが大きすぎる

MySQL テーブルに手動で挿入する代わりに、ファイルからデータをロードする必要があるシナリオがいくつかあります。 読み込み中に、行 # の列 'columnName' のデータが切り捨てられましたというエラーが発生する場合があります。 なぜ?

これは、指定されたデータが MySQL テーブルの列のデータ型に対して大きすぎるように思われるためです。 たとえば、value 属性が text 型であるテーブルがあり、提供されたデータの 65K 文字しか収容できないとします。

value 列に 65K を超えるデータを挿入すると、このエラーが発生します。

この問題を解決するには、16MB と 4GB を収容できる MEDIUMTEXTLONGTEXT など、より多くのデータを受け入れることができるタイプに変更する必要があります。 こちら で最適化のヒントを見つけることもできます。

列のデータ型の最大長を考慮して、SET ANSI_WARNINGS OFF を使用してデータを切り捨て、レコードを再度挿入することもできます。

無効なデータが渡される

無効なデータを挿入しようとすると、エラー コード: 1265。行 1 の列 'a' のデータが切り捨てられましたも MySQL で発生します。

たとえば、price フィールドが float 型で、NULL 値を受け入れるテーブルがあるとします。 以下を参照してください。

#create a table named `prices`
CREATE TABLE prices (ID INT NOT NULL, price FLOAT NULL);
#insert the first record
INSERT prices VALUES (1, '');

ここでは、price 列に、NULL 値を取る float 型の空の文字列を挿入します。 NULL'' は同じものではないことに注意してください。

それでも、NULL 値を取る列に空の文字列を挿入しようとすると、Error Code: 1265. Data truncated for column 'a' at row 1 が生成されます。 この問題の最も簡単な解決策は、price テーブルのそれぞれの列で必要とされる正しいデータ型の正しい値を渡すことです。

空の文字列 ('') の代わりに NULL 値を明示的に指定するか、INSERT ステートメントでその特定の列の値を書き込まないことで解決できます。 この例を考慮して、次のスニペットを参照してください。

INSERT prices VALUES (1, NULL); #insert null explicitly
INSERT prices (ID) VALUES (2); #don't specify values for `price` column

不適切な終了文字

すべての行を手動で MySQL テーブルに挿入すると、すべてうまくいきます。 一度に複数の行を読み込もうとして終了文字を適切に取得できないと、エラーが発生します。

これを解決するには、ファイルの終端文字を確認し、LOAD コマンドで次のように指定する必要があります。

#if the terminating character is `tab`
FIELDS TERMINATED BY '\t'
#if the terminating character is a `comma`
FIELDS TERMINATED BY ','
著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MySQL Error