web-dev-qa-db-ja.com

不適切な10進数(整数)値: '' mySQL

MySQLワークベンチデータベースでは、テーブルの1つに緯度、経度、地区の属性があります

lat:10進数(10,8)

lng:10進数(11,8)

地区:int(4)

.csvファイルからこのテーブルにデータをインポートしようとしています

ERROR 1366: 1366: Incorrect decimal value: '' for column 'lat' at row 1
SQL Statement:
ERROR 1366: 1366: Incorrect integer value: '' for column 'district' at row 1
SQL Statement:
INSERT INTO `db`.`myTable` (`id`, `name_en`, `icon`, `lat`, `lng`, `district`, `city`, `postal_code`)
    VALUES ('686', 'Name',?, '', '', '','1', 'P.O. Box 1111')
12
Maha

厳密なSQLモードが有効になっており、挿入の10進数フィールドの値として空の文字列( '')を渡そうとしました。空の文字列は、数値フィールドの無効な値であり、 strict sql mode mysqlは、警告を提供してデフォルト値(0特定の列のデータ型の数値列の場合:

厳格モードは、MySQLがINSERTやUPDATEなどのデータ変更ステートメントの無効な値や欠損値を処理する方法を制御します。値はいくつかの理由で無効になる場合があります。たとえば、列のデータ型が間違っているか、範囲外である可能性があります。挿入する新しい行に、定義に明示的なDEFAULT句がないNULL以外の列の値が含まれていない場合、値が欠落しています。 (NULL列の場合、値が欠落している場合はNULLが挿入されます。)厳密モードは、CREATE TABLEなどのDDLステートメントにも影響します。

厳密モードが有効でない場合、MySQLは無効な値または欠落した値に対して調整された値を挿入し、警告を生成します(セクション13.7.5.40「SHOW WARNINGS構文」を参照)。厳格モードでは、INSERT IGNOREまたはUPDATE IGNOREを使用してこの動作を生成できます。

インポートを開始する前に、セッションの厳密なSQLモードを削除します。

SET SESSION sql_mode = ''
24
Shadow