18.2 Как сообщать об ошибках или проблемах Connector/J
Обычное место для сообщения об ошибках — http://bugs.mysql.com/, это база данных наших ошибок. Эта база данных является общедоступной и может быть просмотрена и найдена в ней любым пользователем. Если вы войдете в систему, вы также сможете вносить новые отчеты.
Если вы обнаружили уязвимость в безопасности в MySQL Server, пожалуйста, сообщите нам об этом незамедлительно, отправив электронное сообщение на адрес <secalert_us@oracle.com>. Исключение: клиенты поддержки должны сообщать обо всех проблемах, включая проблемы безопасности, в службу поддержки Oracle по адресу http://support.oracle.com/.
Написание хорошего отчета об ошибке требует терпения, но правильное написание с первого раза экономит время и вам, и нам. Хороший отчет об ошибке, содержащий полный тест на ошибку, делает весьма вероятным, что мы исправим ее скорее, чем позже.
Этот раздел поможет вам правильно составить свой отчет, чтобы вы не тратили время на действия, которые могут не помочь нам или вообще не помогут.
Если у вас есть воспроизводимая ошибка, пожалуйста, сообщите об этом в базу данных ошибок по адресу http://bugs.mysql.com/. Любая ошибка, которую мы можем воспроизвести, имеет высокую вероятность быть исправленной скорее, чем позже.
Для сообщения об иных проблемах вы можете использовать одну из MySQL рассылок.
Помните, что мы можем ответить на сообщение, содержащее слишком много информации, но не на сообщение, содержащее слишком мало. Люди часто пропускают факты, потому что считают, что знают причину проблемы, и предполагают, что некоторые детали не важны.
Хороший принцип таков: если вы сомневаетесь, стоит ли что-то упомянуть, укажите это. Быстрее и проще написать еще несколько строк в своем отчете, чем ждать ответа дольше, если нам нужно попросить вас предоставить информацию, которая отсутствовала в первоначальном отчете.
Наиболее распространённые ошибки в отчётах об ошибках: (a) отсутствие номера версии Connector/J или MySQL, используемой; и (b) неполное описание платформы, на которой установлен Connector/J (включая версию JVM, тип платформы и номер версии, на которой установлен сам MySQL).
Эта информация очень важна, и в 99 случаях из 100 отчет об ошибке бесполезен без неё. Очень часто мы получаем вопросы, такие как «Почему это не работает для меня?». Затем мы обнаруживаем, что запрашиваемая функция не была реализована в этой версии MySQL или что ошибка, описанная в отчете, уже исправлена в более новых версиях MySQL.
Иногда ошибка зависит от платформы; в таких случаях исправить что-либо без знания операционной системы и номера версии платформы практически невозможно.
Если это возможно, создайте воспроизводимый автономный тест-кейс, не включающий сторонних классов.
Для упрощения этого процесса мы предоставляем базовый класс для тест-кейсов Connector/J, названный 'com.mysql.cj.jdbc.util.BaseBugReport'. Для создания тест-кейса для Connector/J, используя этот класс, создайте свой собственный класс, унаследованный от com.mysql.cj.jdbc.util.BaseBugReport и переопределите методы setUp(), tearDown() и runTest().
В методе setUp() создайте код, который создаёт ваши таблицы и заполняет их данными, необходимыми для демонстрации ошибки.
В методе runTest() создайте код, который демонстрирует ошибку, используя таблицы и данные, созданные вами в методе setUp.
В методе tearDown() удалите любые таблицы, созданные вами в методе setUp().
В любом из вышеперечисленных трёх методов используйте один из вариантов метода getConnection() для создания JDBC-соединения с MySQL:
getConnection()— обеспечивает подключение к JDBC-URL, указанному вgetUrl(). Если подключение уже существует, возвращается это подключение, в противном случае создаётся новое подключение.getNewConnection()— используйте этот метод, если вам нужно получить новое подключение для отчета об ошибке (то есть, если задействовано более одного подключения).getConnection(String url)— возвращает подключение, используя заданный URL.getConnection(String url, Properties props)— возвращает подключение, используя заданный URL и свойства.
Если вам нужно использовать JDBC-URL, отличающийся от 'jdbc:mysql:///test', переопределите также метод getUrl().
Используйте методы assertTrue(boolean expression) и assertTrue(String failureMessage, boolean
expression), чтобы создать условия, которые должны быть выполнены в вашем тест-кейсе, демонстрирующем ожидаемое поведение (по сравнению с наблюдаемым поведением, из-за которого вы, скорее всего, подаёте отчет об ошибке).
Наконец, создайте метод main(), который создаёт новый экземпляр вашего тест-кейса и вызывает метод run:
public static void main(String[] args) throws Exception {
new MyBugReport().run();
}
После завершения тест-кейса и проверки того, что он демонстрирует ошибку, которую вы сообщаете, загрузите его вместе с отчетом об ошибке на http://bugs.mysql.com/.
© 2025 Oracle
Licensed under the GPLv2 License.