Trong dự án django của tôi, tôi sử dụng db mysql cho sản xuất và sqlite để kiểm tra.Bật tính năng kiểm tra tính toàn vẹn với sqlite trong django
Vấn đề là, một số mã của tôi dựa vào kiểm tra tính toàn vẹn của mô hình. Nó hoạt động tốt với mysql, nhưng lỗi toàn vẹn không được ném khi cùng một mã được thực thi trong các thử nghiệm.
Tôi biết rằng các phím nước ngoài kiểm tra phải được kích hoạt trong sqlite:
PRAGMA foreign_keys = 1;
Tuy nhiên, tôi không biết đâu là cách tốt nhất để làm kích hoạt này (same question here).
Hơn nữa, đoạn code sau sẽ không làm việc:
def test_method(self):
from django.db import connection
cursor = connection.cursor()
cursor.execute('PRAGMA foreign_keys = ON')
c = cursor.execute('PRAGMA foreign_keys')
print c.fetchone()
>>> (0,)
Bất kỳ ý tưởng?
Tại sao bạn không sử dụng cùng một DB cho các thử nghiệm được sử dụng trong sản xuất? Không phải là mục tiêu của môi trường thử nghiệm để tái tạo môi trường sản xuất? * –
Thử nghiệm một ứng dụng duy nhất, với 'thời gian python manage.py kiểm tra sản phẩm'. Mysql: 0m58.232s. Sqlite: 0m5.153s. –
Không phải là một khởi đầu của một giải pháp ở đây nhưng có vẻ như rất nhiều thảo luận (và các bản vá lỗi) đang diễn ra trên vé này về loại vấn đề bạn đang nêu tại đây https://code.djangoproject.com/ticket/11665 – NiKo