2013-01-24 48 views
5

Chúng tôi có các địa chỉ IP cơ sở dữ liệu khác nhau cho môi trường phát triển và sản xuất của chúng tôi. Môi trường phát triển của chúng tôi đang chạy cục bộ trên các máy phát triển của chúng tôi và chỉ vào một máy chủ cơ sở dữ liệu phát triển duy nhất trên mạng cục bộ của chúng tôi. Môi trường sản xuất của chúng tôi sử dụng một cơ sở dữ liệu được lưu trữ tại RackSpace và được lưu trữ trên mạng nội bộ của họ. Bằng cách nào đó, có vẻ như địa chỉ IP phát triển của chúng tôi đã được lưu trữ trong quá trình sản xuất. Dưới đây là những gì tôi đã thực hiện cho đến thời điểm này:Cơ sở dữ liệu Magento IP được lưu trữ

  • Xác minh rằng địa chỉ IP trong ứng dụng/etc/local.xml trong sản xuất là chính xác.
  • xóa các nội dung của var/cache/* và var/full_page_cache/*
  • Khởi động lại máy chủ memcached của chúng tôi để xóa tất cả các cache lạ có
  • grepped toàn bộ codebase của chúng tôi cho địa chỉ dev IP
  • đổ cơ sở dữ liệu mysql và grepped bãi cho IP dev (chúng tôi đã tuyệt vọng)
  • xóa các nội dung của/tmp
  • module tùy chỉnh Disabled

này có đã làm việc trong nhiều tuần mà không có vấn đề gì. Đó là khi tôi vô hiệu hóa bộ nhớ cache cấu hình mà vấn đề bắt đầu. Tôi biết những gì bạn đang suy nghĩ, rằng nó chỉ là bây giờ cuối cùng đã chọn một thay đổi cấu hình mà một người nào đó thực hiện kể từ lần cuối cùng bộ nhớ cache đã được xóa. Điều đó có ý nghĩa. Điều không có ý nghĩa là tôi đã xóa từng bộ nhớ cache được đề cập ở trên, enabled the config cache using MageTool và mọi thứ hoạt động như một nét duyên dáng.

Trả lời

9

Khi nó quay ra, sửa chữa toàn bộ điều này là một quá trình hai bước.

Bởi vì môi trường sản xuất và phát triển của chúng tôi đòi hỏi IP khác nhau app/etc/local.xml là untracked và thay vào đó chúng tôi theo dõi app/etc/local-example.xml sao cho tất cả các nhà phát triển của chúng tôi có thể nhanh chóng và dễ dàng sao chép nó sang app/etc/local.xml và thể lên và chạy. Điều này đã trở thành một chút tiêu chuẩn của công ty và chúng tôi sử dụng nó trên tất cả các dự án khác của chúng tôi. Rất may, một trong những đồng nghiệp của tôi đã phát hiện ra rằng Magento loads all the xml files in app/etc/.

Vì vậy, không, IP phát triển của chúng tôi không được lưu trữ một cách kỳ diệu ở một số vị trí ít người biết đến, chúng tôi chỉ vô tình tải nó. Sau khi đổi tên tệp đó thành app/etc/local.xml.example, nó dừng tham chiếu IP phát triển của chúng tôi. Yay!

Hiện tại, điều này không liên quan trực tiếp đến câu hỏi, nhưng vì giải pháp đã giới thiệu một lỗi mới mà tôi muốn đề cập đến. Khi chúng tôi đổi tên tệp xml và xóa tất cả bộ nhớ cache, chúng tôi đã bắt đầu thấy lỗi mới.

PHP Fatal error: Call to a member function setQueryHook() on a non-object in app/code/core/Mage/Core/Model/Resource/Setup.php on line 347

Trong ví dụ tập tin của chúng tôi chúng tôi đã xác định nguồn cơ sở dữ liệu của chúng tôi bên trong một <default_setup /> nút duy nhất. Đối với môi trường sản xuất của chúng tôi, chúng tôi thực sự có a triple-m setup với các IP riêng biệt cho các truy vấn đọc và ghi để sản xuất thay vì một nút <default_setup /> đơn lẻ, chúng tôi có các nút <default_read /><default_write />. Tôi chưa bao giờ có thể tìm thấy tài liệu về chính xác những gì được cho phép và yêu cầu trong tài nguyên, nhưng phần tách đọc/ghi được thiết lập cho mỗi the instructions in another StackOverflow post on the topic và, cho đến ngày hôm nay, hoạt động rất tốt.

Trên linh cảm, tôi đã đổi tên nút <default_write /> thành <default_setup /> và mọi thứ đều bắt đầu hoạt động trở lại. Tôi chưa chắc chắn nếu đọc và viết được chia tách một cách chính xác, nhưng tôi sẽ cập nhật câu trả lời này một khi tôi xác nhận tất cả mọi thứ đang làm việc.

+0

Cảm ơn, đã giải quyết cho tôi một số giờ tìm kiếm. – Alekc

+0

Hey, bạn đã bao giờ tìm ra điều gì đã xảy ra với nút '' của bạn chưa? – JMTyler

+0

Đáng buồn thay, không, tôi chưa bao giờ có cơ hội quay lại đó và tôi đã chuyển từ dự án đó. –

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