2016-01-27 58 views
7

Trong cơ sở dữ liệu mySQL bàn làm việc, một trong các bảng có vĩ độ, kinh độ và huyện thuộc tínhsai số thập phân (số nguyên) giá trị: '' mySQL

lat: decimal (10,8)

lng: số thập phân (11 , 8)

huyện: int (4)

tôi đang cố gắng để nhập dữ liệu từ file .csv để bảng này

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') 
+0

Tôi thích sử dụng 'loại varchar' để tránh 'lỗi sensitive'. –

Trả lời

12

Bạn đã bật chế độ sql nghiêm ngặt và bạn cố chuyển một chuỗi rỗng ('') làm giá trị cho các trường thập phân trong chèn. Chuỗi rỗng là giá trị không hợp lệ cho trường số và trong strict sql mode mysql tạo lỗi nếu bạn cố gắng chèn dữ liệu không hợp lệ vào cột, thay vì cung cấp cảnh báo và sử dụng giá trị mặc định (0 cho cột số) của dữ liệu của cột cụ thể loại:

Chế độ nghiêm ngặt kiểm soát cách MySQL xử lý giá trị không hợp lệ hoặc bị thiếu trong câu lệnh thay đổi dữ liệu như INSERT hoặc UPDATE. Giá trị có thể là không hợp lệ vì nhiều lý do. Ví dụ: có thể có dữ liệu sai loại cho cột hoặc có thể nằm ngoài phạm vi. Giá trị bị thiếu khi hàng mới được chèn vào không chứa giá trị cho cột không thuộc số NULL không có mệnh đề DEFAULT rõ ràng trong định nghĩa của nó. (Đối với cột số NULL, NULL được chèn vào nếu giá trị bị thiếu.) Chế độ nghiêm ngặt cũng ảnh hưởng đến các câu lệnh DDL như CREATE TABLE.

Nếu chế độ nghiêm ngặt không có hiệu lực, MySQL chèn giá trị được điều chỉnh cho giá trị không hợp lệ hoặc bị thiếu và tạo cảnh báo (xem phần 13.7.5.40, "SHOW WARNINGS Syntax"). Trong chế độ nghiêm ngặt, bạn có thể tạo ra hành vi này bằng cách sử dụng INSERT IGNORE hoặc UPDATE IGNORE.

Hủy bỏ chế độ nghiêm ngặt sql cho phiên làm việc trước khi bắt đầu nhập khẩu:

SET SESSION sql_mode = '' 
+0

Thanx rất nhiều, nó đã hoạt động! :) – Maha

+0

Cần lưu ý rằng nếu bạn muốn thiết lập điều này trên toàn cầu, bạn có thể làm như sau: 'SET GLOBAL sql_mode = ''' – aldefouw

+1

@aldefouw đó không phải là một ý tưởng hay. – Shadow

Các vấn đề liên quan