PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara memperbaiki sqlalchemy.exc.DataError:(psycopg2.errors.StringDataRightTruncation)?

image kolom dinyatakan sebagai karakter data dengan panjang maksimum 100, tetapi Anda melewatkan lebih dari 100 byte biner data:

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x05V\x00\x00\x03\x00\x08\x06\x00\x00\x00\xcf><\xc2\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x ... (1331901 characters truncated) ... 1l!+\x1d\xe9I6\xfa\x80*_n\xa7\x10\xf5c\x1e;\xf8:\xea\xb3c\xed\xd2+\xf3\xc6*\xa9\xbe\xbe\xde\xfe\x1f\x1e\xa5\xb3\xc5S^Y\x00\x00\x00\x00IEND\xaeB\x82'

Karena Anda menggunakan Postgresql, Anda bisa mendeklarasikan image tanpa menentukan panjang:

image = db.Column(db.String)

tetapi Anda mungkin mengalami kesulitan menangani data saat dikembalikan dari database*.

Akan lebih baik untuk mendeklarasikan image sebagai tipe BLOB (Binary Large OBject):

image = db.Column(LargeBinary)

maka SQLAlchemy harus mengembalikan byte seperti yang diharapkan saat mengambil data.

Jika Anda mengubah deklarasi kolom untuk database yang ada, Anda perlu menerapkan perubahan ke database itu sendiri, baik menggunakan alat seperti Migrasi Labu , atau langsung di konsol psql:

 ALTER TABLE ads ALTER COLUMN image TYPE bytea USING image::bytea;

* Ini akan berfungsi untuk sqlite, tetapi tidak akan bolak-balik dengan benar di Postgresql - lihat jawaban ini untuk diskusi lebih lanjut tentang ini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL multi INSERT...KEMBALI dengan beberapa kolom

  2. Dorongan Heroku dari aplikasi Django tidak mendapatkan modul bernama psycopg2.extensions

  3. Hindari memasukkan nilai 'null' ke tabel database melalui JPA

  4. Kesalahan pernyataan di:Django-rest-Framework

  5. Tetapkan nilai pengembalian default untuk fungsi Postgres