2012-07-02 39 views
10

Tôi gặp lỗi integer out of range khi cố di chuyển cơ sở dữ liệu của mình từ SQLite sang PostgreSQL.Số nguyên nằm ngoài phạm vi

Tôi nghĩ rằng tôi đã xác định được vấn đề: Tôi có một số số nguyên lớn trong trường IntegerField trong mô hình của tôi.

Về cơ bản về trình tự của 52675215334.

Khi tôi thay đổi giá trị này cho một số nhỏ như 1 và sau đó cố gắng để di chuyển cơ sở dữ liệu của tôi, tất cả là tốt.

Có loại dữ liệu nào khác mà tôi nên sử dụng ngoài IntegerField để lưu trữ các giá trị lớn này không?

+1

bản sao có thể có của [Trường số nguyên lớn trong mô hình django] (http://stackoverflow.com/questions/283724/big-integer-field-in-django-models) – FogleBird

+1

Những con số này lớn hơn có thể vừa với một int 32 bit. Hãy thử "bigint" http://www.postgresql.org/docs/8.2/static/datatype-numeric.html –

+1

SQLite có nhiều điểm yếu hơn . –

Trả lời

17

Hãy thử sử dụng BigIntegerField nếu số nguyên của bạn là lớn. Từ các tài liệu:

Một 64 bit số nguyên, giống như một IntegerField ngoại trừ việc nó được đảm bảo để phù hợp với số từ -9223372036854775808 để 9223372036854775807. Các quản trị đại diện cho điều này như một (đầu vào một single-line) <input type="text">.

+1

Cảm ơn ... cuối cùng tôi nhận ra tôi thực sự có thể lưu trữ giá trị như một CharField vì nó chỉ được sử dụng để nối thêm vào các URL, nhưng điều này cũng đã làm việc. – user1328021

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