Skip Navigation
Expand
Oracle B2C Service 18A: MySQL 5.7 アップグレード - 一般告知
Answer ID 9618   |   Last Review Date 04/09/2019

Oracle B2C Service 18A: MySQL 5.7 アップグレード - 一般通知について知っておくべきことはありますか?

環境:

MySQL, Upgrades, 18A and newer
オーディエンス: Oracle B2C Service (OSvC) Site Owners and Administrators

解決策:

Oracle B2C Service 18Aリリースでは, MySQLバージョン5.7.17以降を使用するために、本番サイトの移行を開始します。この移行により、Oracle B2C Serviceは独自のカスタマイズと統合の要件を満たす安全で柔軟なプラットフォームを提供し続けます。

February 2015以降のOracle B2C Service上のサイトであれば、自動的にMySQL移行の対象となります。2015年2月より古いバージョン(またはEOF)のサイトは、MySQL 5.7に移行する前に、Oracle B2C Service 5月2017(またはそれ以降)にアップグレードする必要があります。

サイトの所有者/管理者へは、MySQLの移行に先立って連絡が取られます。移行に関するご質問は、Oracle B2C Service サポートチームまでお問い合わせください。

Oracle B2C Serviceのサイト所有者、管理者または開発者は、古いバージョンとバージョン5.7のMySQLの間の非互換性のいくつかに注意する必要があります。これらのトピックは、ROQLクエリ、特定の注文要件を持つカスタムレポート、または従来の直接SQLクエリを持つサイトに特に関係します。このリストは、5.7へのすべての改善点を網羅したリストではありませんが、クエリに影響する可能性が最も高い項目を表しています。


 1. 

クエリの引用符で囲まれていない日付の値は5.7では機能しません。 たとえば、以下のコマンドは、クエリの日付に基づいてMySQL バージョン5.7の値を返します(stat_dateはtimestamp型です):

a. mysql> INSERT INTO foo (source, stat_date) VALUES ('Input', 2016-03-01);

b. mysql> SELECT id FROM foo WHERE stat_date LIKE 2008-04-16;

しかし、上記のクエリをMySQL 5.7で動作させるには、このような日付の値に引用符を追加する必要があります:

a. mysql> INSERT INTO foo (source, stat_date) VALUES ('Input', '2016-03-01');

b. mysql> SELECT id FROM foo WHERE stat_date LIKE '2008-04-16';

 2. 

DATEおよびTIMESTAMPデータ型には複数の変更があります。 日付と時刻関数のいくつかは、MySQL 5.7ではサポートされなくなりました。 詳細は、MySQLのドキュメントを参照してください。

 3. 

文字列から数値への変換の精度から改善されています。MySQL 5.5.3以降、このサーバには、David M. Gayの文字列と数値の変換用ライブラリ「dtoa」が含まれています。 このライブラリーは、文字列からDECIMAL、FLOATおよびDOUBLE値への変換を改善しました。 これらの関数を使用するクエリは、結果に異なる精度値を返す可能性があります。

 4.

明示的な 'ORDER BY'句のないクエリは、MySQL 5.7で実行したときに異なる順序で結果を返す可能性があります。 順序精度を必要とする問合せでは、必ず 'order by'句を使用して確定的にする必要があります。  

 5.

バージョン5.7以降、DISTINCTを使用するクエリは、SELECTリストのすべてのORDER BYフィールドを持つ必要があります。 この要件は、以前のバージョンのMySQLでは強制されていませんでした。

たとえば、以下のクエリは "ERROR 3065(HY000):ORDER BY句の式#1がSELECTリストになく、SELECTリストにない参照列 'foo.file'がDISTINCT"と互換性がありません:

a. mysql> SELECT DISTINCT(image_id) FROM foo INNER JOIN bar ON id = image_id WHERE category_id = 12345 ORDER BY foo.file ASC;

この問題を解決するには、select句でfoo.fileを設定します:

a. mysql> SELECT DISTINCT(image_id), foo.file FROM foo INNER JOIN bar ON id = image_id WHERE category_id = 12345 ORDER BY foo.file ASC;

本リストは5.7へのすべての変更の網羅的なリストではありません。詳細については、MySQLの ドキュメンテーション を参照してください。 ご質問やご不明な点がございましたら、Oracle Cloud Customer Connect Discussion Forumsにお問い合わせください。

Available Languages for this Answer:

Notify Me
The page will refresh upon submission. Any pending input will be lost.