Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

VARCHAR (4) lưu trữ nhiều ký tự hơn bốn

Nếu bạn đang làm điều này:

  1. Tạo hoặc tải một đối tượng $o .
  2. Chỉ định '12345' vào thuộc tính / cột được đề cập.
  3. Lưu $o và để MySQL cắt ngắn giá trị thành '1234' .
  4. Truy cập thuộc tính / cột trong $o và nhận '12345' quay lại.

thì bạn đang gặp một trong những vấn đề khi để cơ sở dữ liệu âm thầm xử lý dữ liệu của bạn.

Lưu thành công, đối tượng của bạn không biết rằng MySQL đã cắt bớt dữ liệu nên nó vẫn giữ nguyên '12345' thay vì tải lại cột đó từ cơ sở dữ liệu và bạn có dữ liệu không nhất quán trong tay.

Nếu bạn đang phụ thuộc vào MySQL âm thầm cắt bớt dữ liệu của mình thì có thể bạn sẽ phải làm điều này:

  1. Tạo / tải đối tượng của bạn.
  2. Đã cập nhật các thuộc tính.
  3. Lưu đối tượng.
  4. Bỏ tham chiếu cục bộ của bạn cho đối tượng.
  5. Tải nó mới từ cơ sở dữ liệu để đảm bảo bạn nhận được thực tế giá trị.

Tôi khuyên bạn nên thêm các xác thực nghiêm ngặt vào các đối tượng của mình để tránh bị cắt ngắn bên trong MySQL. Đang bật chế độ nghiêm ngặt cũng sẽ tránh được vấn đề này nhưng sau đó bạn cần phải xem xét và thắt chặt tất cả việc xử lý lỗi và xác thực dữ liệu của mình (điều này thực sự sẽ không phải là một điều xấu).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể sử dụng VARCHAR làm KHÓA CHÍNH không?

  2. Cách nhận nội dung trong trường văn bản động, dựa trên lựa chọn thả xuống trong php

  3. Truy vấn db MySQL

  4. làm thế nào để chặn chèn bản ghi trùng lặp trong nút mysql cho mối quan hệ nhiều-nhiều?

  5. Làm cách nào để lấy khóa chính tự động tăng MySQL từ Sequelize trên save ()?