Це не помилка
Принаймні, не на ваш код. Це помилка у вашому процесі . Ваш керівник проекту повинен набагато більше турбуватися про ваш процес, ніж про ваш код.
Як ти з цим справляється?
Простіше кажучи, не дозволяючи інженерам змінювати виробництво чи спільні бази даних про розробку .
Якщо припустити, що це спільна база даних розробок:
В ідеалі, якщо це можливо, уникайте в першу чергу спільної бази даних . Натомість майте бази даних на одного розробника, які є нетривалими. Це має бути автоматизовано за допомогою скриптів, інакше вартість тестування стає занадто великою, і є стимул не перевіряти речі. Ви можете мати ці бази даних на робочій станції розробника або на центральному сервері.
Якщо з якоїсь причини ви абсолютно ОБОВ'ЯЗКОВО маєте спільну базу даних, вам слід використовувати світильники - по суті, те, що встановлює базу даних у добре відомий стан кожного разу, коли вам потрібно її використовувати. Це дозволяє уникнути, що розробники не будуть покусані змінами інших людей.
Якщо вам потрібно застосувати постійні зміни до бази даних, вам слід скористатися ними для управління джерелом . Налаштуйте свою базу даних таким чином, щоб у розробників не було дозволу писати на неї безпосередньо, і створіть програму, яка витягує зміни з керування джерелами та застосовує їх.
Нарешті, з вашого опису про те, як ви налагоджуєте речі, здається, що ви не використовуєте CI . Використовуйте CI . Налаштування трохи не болить, але це дозволить заощадити багато часу в довгостроковій перспективі, не кажучи вже про те, щоб не турбуватися про невідтворювані помилки бази даних. Вам доведеться тільки турбуватися про heisenbugs зараз!
Припустимо, що це виробнича база даних:
Якщо ваші розробники змінюють виробничі бази, багато речей пішли жахливо неправильно, навіть якщо зміни абсолютно правильні.
Розробники ніколи не мають доступу до виробничих баз даних . Тут абсолютно немає причин, і так багато речей, які можуть піти дуже не так.
Якщо вам потрібно щось виправити у виробничій базі даних, спершу ви створіть резервну копію, відновіть її в іншому (розробному) екземплярі, а потім пограйте навколо цієї бази розробок. Як тільки ви думаєте, що ви готові до виправлення (на контролі джерела!), Ви знову виконуєте відновлення, застосовуєте виправлення та бачите результат. Потім, після резервного копіювання речей (і в ідеалі запобігання одночасним оновленням), ви виправляєте виробничий екземпляр, в ідеалі за допомогою програмного патчу.
Якщо вам потрібно щось перевірити у виробничій базі даних ... ні, ви цього не робите. Які б тести вам не потрібно було робити, ви повинні робити в екземплярі розробки. Якщо вам потрібні деякі дані, щоб зробити тести, ви отримаєте ці дані там.