2011-01-31 32 views
5

Đây có thể là vấn đề kỳ lạ nhất trong 4 năm của tôi với Django.DatabaseError: Không thể mở tệp db, nhưng chỉ dành cho quản trị viên Django

Trang web của tôi hoạt động ổn định cục bộ. Trong môi trường sản xuất nó cũng chạy tốt, ngoại trừ, khi tôi cố gắng truy cập vào trang quản trị, tôi nhận được một lỗi máy chủ mà là một "OperationalError: không thể mở tập tin cơ sở dữ liệu" trong nhật ký lỗi Apache.

Tệp DB có thể ghi trên thế giới và đường dẫn trong cài đặt là tuyệt đối. Môi trường sản xuất là Ubuntu Lucid/Python 2.6/Sqlite3. Tôi đã thử cả hai với Django 1.2.4 và 1.3 beta.

Phần lạ là, tôi có thể syncdb trên máy chủ. Nó tạo ra các bảng và người dùng quản trị. Tôi có thể truy cập trang web mà không gặp vấn đề gì. Tôi có thể chạy shell và tạo nội dung trong dấu nhắc python. Trang web có thể xem được. Đó là chỉ khi tôi truy cập admin, tôi nhận được lỗi này.

Tôi không còn cơ sở nào cho bất kỳ lý do nào. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

ps: Lỗi được nêu ở cấp Apache, không phải từ Django. Truy nguyên Django nằm trong nhật ký lỗi Apache, đọc DatabaseError: unable to open database file.

+0

Bạn có chắc chắn tất cả các mô hình của bạn là cùng một phiên bản giống như trong cơ sở dữ liệu? Tôi đã có một vấn đề tương tự một lần và tôi đã không nhận ra nó trong đầu bởi vì tôi đã sử dụng mô hình này rất hiếm khi trên trang bình thường của tôi. Nhưng quản trị viên sẽ mở tất cả chúng cùng một lúc. –

+0

tôi không thể tìm thấy bất kỳ vấn đề với các mô hình. tôi có thể truy cập trang quản trị cục bộ. cũng, nếu đó là các mô hình, tôi sẽ nhận được một lỗi khác, không phải 'không thể mở tệp cơ sở dữ liệu'. vì vậy nó phải là một cái gì đó khác tôi nghĩ. cảm ơn. – omat

Trả lời

2

Một phỏng đoán ngu ngốc.

Người dùng nào đang chạy apache?

Tôi biết thật lạ khi phần còn lại của trang web hoạt động, nhưng kiểm tra kỹ xem db sqlite của bạn có thể truy cập và có thể đọc được từ người dùng Apache đang chạy không!

+1

vâng, cảm ơn! tôi đã thay đổi nhóm chủ sở hữu cho toàn bộ cây thư mục thành 'www-data', là apache và nó hoạt động. kỳ lạ là tôi đã cho phép 777 vào tệp cơ sở dữ liệu sqlite nhưng nó không hoạt động. cảm ơn. – omat

+0

Rất vui được nghe tin vui. Có lẽ tệp là 777, nhưng một (hoặc nhiều) thư mục trong đường dẫn không cho phép người dùng apache truy cập tệp đó! –

+4

Tôi biết đó là một câu hỏi cũ nhưng cho đầy đủ: python sqlite mô-đun yêu cầu ghi quyền truy cập vào thư mục chứa tệp cơ sở dữ liệu. – Ochoto

1
sudo chown www-data /var/www/yourproject/db.sqlite3 

này sẽ làm các trick (thiết lập người dùng Apache)

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