Đây không phải là một lỗi
Ít nhất là không phải trên mã của bạn. Đó là một lỗi trong quá trình của bạn . Người quản lý dự án của bạn sẽ lo lắng hơn rất nhiều về quy trình của bạn so với mã của bạn.
Làm thế nào để bạn đối phó với điều này?
Rất đơn giản, bằng cách không để các kỹ sư thay đổi cơ sở dữ liệu phát triển hoặc chia sẻ .
Giả sử đây là một cơ sở dữ liệu phát triển được chia sẻ:
Lý tưởng nhất, nếu có thể, tránh có một cơ sở dữ liệu được chia sẻ ở nơi đầu tiên . Thay vào đó, có cơ sở dữ liệu cho mỗi nhà phát triển tồn tại trong thời gian ngắn. Điều này nên được tự động hóa với các tập lệnh, nếu không, chi phí để kiểm tra trở nên quá lớn và có động cơ để không kiểm tra mọi thứ. Bạn có thể có các cơ sở dữ liệu này trên máy trạm của nhà phát triển hoặc trên máy chủ trung tâm.
Nếu, vì một số lý do, bạn hoàn toàn PHẢI có một cơ sở dữ liệu dùng chung, bạn nên sử dụng đồ đạc - về cơ bản, một cái gì đó đặt cơ sở dữ liệu về trạng thái đã biết mỗi khi bạn cần sử dụng nó. Điều này tránh cho các nhà phát triển bị cắn bởi những thay đổi của người khác.
Nếu bạn cần áp dụng các thay đổi vĩnh viễn cho cơ sở dữ liệu, bạn nên cam kết chúng với kiểm soát nguồn của mình . Thiết lập cơ sở dữ liệu của bạn sao cho các nhà phát triển không có quyền ghi trực tiếp vào cơ sở dữ liệu đó và có một chương trình lấy các thay đổi từ kiểm soát nguồn và áp dụng chúng.
Cuối cùng, từ mô tả của bạn về cách bạn gỡ lỗi mọi thứ, có vẻ như bạn không sử dụng CI . Sử dụng CI . Việc cài đặt hơi khó khăn một chút, nhưng về lâu dài sẽ tiết kiệm được rất nhiều SO, chưa kể đến việc ngăn bạn khỏi lo lắng về các lỗi cơ sở dữ liệu không thể khắc phục được. Bây giờ bạn sẽ chỉ phải lo lắng về heisenbugs !
Giả sử đây là một cơ sở dữ liệu sản xuất:
Nếu các nhà phát triển của bạn đang thay đổi cơ sở dữ liệu sản xuất, nhiều thứ đã trở nên sai lầm khủng khiếp, ngay cả khi những thay đổi đó là hoàn toàn chính xác.
Các nhà phát triển không bao giờ nên truy cập cơ sở dữ liệu sản xuất . Hoàn toàn không có lý do để, và rất nhiều điều có thể rất sai.
Nếu bạn cần phải sửa chữa một cái gì đó trong một cơ sở dữ liệu sản xuất, trước tiên bạn sao lưu, khôi phục rằng sao lưu trên một khác nhau (phát triển) chẳng hạn, và sau đó chơi xung quanh mà cơ sở dữ liệu phát triển. Khi bạn nghĩ rằng bạn đã có bản sửa lỗi (trên kiểm soát nguồn!), Bạn thực hiện lại việc khôi phục, áp dụng bản sửa lỗi và xem kết quả. Sau đó, sau khi sao lưu mọi thứ một lần nữa (và lý tưởng là ngăn chặn cập nhật đồng thời), bạn sửa lỗi sản xuất, lý tưởng là thông qua một bản vá phần mềm.
Nếu bạn cần kiểm tra một cái gì đó trong cơ sở dữ liệu sản xuất ... không, bạn không. Bất cứ thử nghiệm nào bạn cần làm, bạn nên làm trong một ví dụ phát triển. Nếu bạn cần một số dữ liệu để thực hiện các bài kiểm tra, bạn sẽ có được dữ liệu đó trong đó.