Spec-Zone .ru
спецификации, руководства, описания, API

21.3.3.3. Обновление от Более старой Версии

У этого раздела есть информация для пользователей, которые обновляют от одной версии Connector/J другому, или к новой версии сервера MySQL, который поддерживает более свежий уровень JDBC. Более новая версия Connector/J могла бы включать изменения, чтобы поддерживать новые функции, улучшить существующую функциональность, или выполнить новые стандарты.

21.3.3.3.1. Обновление до MySQL, Connector/J 5.1.x

  • В Connector/J 5.0.x и ранее, псевдоним для таблицы в a SELECT оператор возвращается, получая доступ к использованию метаданных набора результатов ResultSetMetaData.getColumnName(). Это поведение однако не JDBC совместимый, и в Connector/J были изменены 5.1 этих поведений так, чтобы исходное имя таблицы, а не псевдоним, было возвращено.

    JDBC-совместимое поведение разрабатывается, чтобы позволить пользователям API восстанавливать оператор DML, основанный на метаданных в пределах ResultSet и ResultSetMetaData.

    Можно получить псевдоним для столбца в наборе результатов, вызывая ResultSetMetaData.getColumnLabel(). Использовать старое несовместимое поведение с ResultSetMetaData.getColumnName(), используйте useOldAliasMetadataBehavior опция и набор значение к true.

    В Connector/J 5.0.x, значение по умолчанию useOldAliasMetadataBehavior был true, но в Connector/J 5.1 это было изменено на значение по умолчанию false.

21.3.3.3.2. JDBC-специфичные Проблемы, Обновляя до MySQL Server 4.1 или Более новый

  • Используя Кодировку символов UTF-8 - До версии 4.1 сервера MySQL, кодировка символов UTF-8 не поддерживалась сервером, однако драйвер JDBC мог использовать это, позволяя хранению войти многократных наборов символов latin1 таблицы на сервере.

    Запускаясь с MySQL 4.1, эта функциональность осуждается. Если у Вас есть приложения, которые полагаются на эту функциональность, и не могут обновить их, чтобы использовать официальную поддержку символа Unicode в версии 4.1 сервера MySQL или более новый, добавить следующее свойство к Вашему соединению URL:

    useOldUTF8Behavior=true

  • Сторона сервера Готовые Операторы - Connector/J 3.1 будет автоматически обнаруживать и использовать сторону сервера подготовленные операторы, когда они будут доступными (версия 4.1.0 сервера MySQL и более новы). Если Ваше приложение встречается с проблемами со стороной сервера подготовленные операторы, можно вернуться к более старой стороне клиента эмулированный подготовленный код оператора, который все еще теперь используется для серверов MySQL, более старых чем 4.1.0 со следующим свойством соединения:

    useServerPrepStmts=false

21.3.3.3.3. Обновление от MySQL, Connector/J 3.0 к 3.1

Connector/J 3.1 разрабатывается, чтобы быть обратно совместимым с Connector/J 3.0 в максимально возможной степени. Существенные изменения изолируются к новой функциональности, представленной в MySQL 4.1 и более новые, который включает наборы символов Unicode, сторона сервера подготовленные операторы, SQLState коды, возвращенные в сообщениях об ошибках сервером и различными улучшениями производительности, которые могут быть включены или отключили свойства конфигурации использования.

  • Наборы символов Unicode: См. следующий раздел, так же как Раздел 10.1, "Поддержка Набора символов", для информации об этой функции MySQL. Если Вам неправильно сконфигурируют что-то, то это будет обычно обнаруживаться как ошибка с сообщением, подобным Illegal mix of collations.

  • Сторона сервера Готовые Операторы: Connector/J 3.1 будет автоматически обнаруживать и использовать сторону сервера подготовленные операторы, когда они будут доступными (версия 4.1.0 сервера MySQL и более новы).

    Запускаясь с версии 3.1.7, драйвер сканирует SQL, из которого Вы готовите использование всех разновидностей Connection.prepareStatement() чтобы определить - ли это поддерживаемый тип оператора, чтобы подготовиться на стороне сервера, и если это не поддерживается сервером, это вместо этого готовит это как сторону клиента эмулированный подготовленный оператор. Можно отключить эту опцию, передавая emulateUnsupportedPstmts=false в Вашем URL JDBC.

    Если Ваше приложение встречается с проблемами со стороной сервера подготовленные операторы, можно вернуться к более старой стороне клиента эмулированный подготовленный код оператора, который все еще теперь используется для серверов MySQL, более старых чем 4.1.0 со свойством соединения useServerPrepStmts=false.

  • Datetimes со все-нулевыми компонентами (0000-00-00 ...): Эти значения не могут быть представлены достоверно в Java. Connector/J 3.0.x всегда преобразовывал их в NULL будучи считанным из ResultSet.

    Connector/J 3.1 выдает исключение по умолчанию, когда с этими значениями встречаются, поскольку это - самое корректное поведение согласно стандартам SQL и JDBC. Это поведение может быть изменено, используя zeroDateTimeBehavior свойство конфигурации. Допустимые значения:

    • exception (значение по умолчанию), который бросает SQLException с SQLState S1009.

    • convertToNull, который возвращается NULL вместо даты.

    • round, который округляет дату к самому близкому самому близкому значению, которое является 0001-01-01.

    Запуск с Connector/J 3.1.7, ResultSet.getString() может быть разъединен от этого использования поведения noDatetimeStringSync=true (значение по умолчанию false) так, чтобы можно было получить неизменное все-нулевое значение как Строку. Отметьте, что это также устраняет использовать любые преобразования часового пояса, поэтому драйвер не будет позволять Вам включать noDatetimeStringSync и useTimezone одновременно.

  • Новые Коды SQLState: Connector/J 3.1 использования SQL:1999 SQLState коды, возвращенные сервером MySQL (если поддерживающийся), которые отличаются от наследства коды состояния X/Open это Connector/J 3.0 использования. Если соединено с сервером MySQL, более старым чем MySQL 4.1.0 (самая старая версия, чтобы возвратить SQLStates как часть кода ошибки), драйвер будет использовать встроенное отображение. Можно вернуться к старому отображению при использовании свойства конфигурации useSqlStateCodes=false.

  • ResultSet.getString(): Вызов ResultSet.getString() на a BLOB столбец теперь возвратит адрес byte[] массив, который представляет это вместо a String представление BLOB. BLOB у значений нет никакого набора символов, таким образом, они не могут быть преобразованы в java.lang.Strings без потери данных или повреждения.

    Чтобы сохранить строки в MySQL с поведением LOB, используйте один из TEXT типы, которые драйвер обработает как a java.sql.Clob.

  • Отладка создает: Запуск с Connector/J 3.1.8 отладочная сборка драйвера в файле называют mysql-connector-java-version-bin-g.jar поставляется рядом с нормальным двоичным файлом фляги, который называют mysql-connector-java-version-bin.jar.

    Запускаясь с Connector/J 3.1.9, мы не поставляем .class несвязанные файлы, они только доступны в архивах JAR, которые поставляют с драйвером.

    Не используйте отладочную сборку драйвера если не проинструктировано, чтобы сделать так, сообщая о проблеме или ошибке, поскольку это не разрабатывается, чтобы быть выполненным в продуктивных средах, и окажет неблагоприятное влияние производительности когда использующийся. Двоичный файл отладки также зависит от библиотеки времени выполнения Aspect/J, которая располагается в src/lib/aspectjrt.jar файл, который идет с распределением Connector/J.