質問 > その他 > EC-CUBE2系でのMySQL5.7利用について |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
takuya_nl |
投稿日時: 2016/2/4 12:09
対応状況: −−−
|
新米 登録日: 2016/1/21 居住地: 大阪 投稿: 4 |
EC-CUBE2系でのMySQL5.7利用について ------------------------------------------------------------------------------------------
[EC-CUBE] 2.13.5 [OS] Redhat系OS [PHP] PHP 5.6.x [データベース] MySQL5.7.10 [WEBサーバ] apache ------------------------------------------------------------------------------------------ 初めて投稿させていただきます。 ただいま、2.13系でのMySQL5.7.10の動作検証を行っておりまして、 現状DBの処理の時点でエラーが発生する状況となっております。 原因としてはSC_DB_DBFactory_MYSQL.php下で、 $objQuery->exec('SET SESSION storage_engine = InnoDB'); という処理が5.7.5以降に削除されている為であり、 $objQuery->exec('SET SESSION default_storage_engine = InnoDB'); と修正することで対応できると思います。 根拠のドキュメントとしては <http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_storage_engine> のstorage_engine項をご確認ください。 ただ、このまま改修をしてしまうとMySQLのバージョンが低い場合に問題が発生してしまう為、 MySQLのバージョンが低い場合は$objQuery->exec('SET SESSION storage_engine = InnoDB'); を使いたいというコードにしたいと思いますが、良い案はございませんか。 sfGetDBVersion関数が使えないので巧い改修方法が思いつかずに質問させていただきました。 ご教示よろしくお願いします |
seasoft |
投稿日時: 2016/2/4 12:15
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: EC-CUBE2系でのMySQL5.7利用について 未確認ですいません。
SQL 内でバージョンによって IF 分岐させて SET 実行は無理でしょうか。
|
seasoft |
投稿日時: 2016/2/4 12:34
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: EC-CUBE2系でのMySQL5.7利用について 本件、開発プロジェクトへ登録しました。
https://github.com/EC-CUBE/eccube-2_13/issues/84
|
takuya_nl |
投稿日時: 2016/2/4 13:09
対応状況: −−−
|
新米 登録日: 2016/1/21 居住地: 大阪 投稿: 4 |
Re: EC-CUBE2系でのMySQL5.7利用について seasoft 様
早速の対応ありがとうございます。 IF分岐の件は後ほど試してみて、ご回答させていただきます |
takuya_nl |
投稿日時: 2016/2/16 12:15
対応状況: 解決済
|
新米 登録日: 2016/1/21 居住地: 大阪 投稿: 4 |
Re: EC-CUBE2系でのMySQL5.7利用について とりあえず、暫定的に解決しましたのでご報告だけ。
SQL内でIF文でのやり方が見つかりませんでした。 結局、initObjQuery関数内で // バージョン取得 $val = $objQuery->getOne('select version()'); if(strcmp($val,'5.7.5')) { $objQuery->exec('SET SESSION default_storage_engine = InnoDB'); } else { $objQuery->exec('SET SESSION storage_enging = InnoDB'); } みたいな動きをしてやれば対応できそうです。(大丈夫だと思います) 以下それぞれで動作確認済み ?MySQL 5.7.10-log ?MySQL 5.6.26 ただ、毎回SC_Query呼び出すタイミングでこの処理が入るのは あまり、実用的ではないと思いますね。 ですので、MySQL5.7.5以降については、 ?$objQuery->exec('SET SESSION default_storage_engine = InnoDB');に修正しておく ?SC_DB_DBFactory_MYSQL.php自体を新旧MySQLで分けておく、 ?そもそものシステム要件で弾いておく ?レスポンス下がっても以上の処理を加える ようにしておくのがいいのかも知れませんね。 |
GUCHI1201 |
投稿日時: 2018/1/14 5:16
対応状況: −−−
|
新米 登録日: 2018/1/14 居住地: 東京都 投稿: 2 |
Re: EC-CUBE2系でのMySQL5.7利用について 今までずっと EC-CUBE2系でのMySQL5.7利用について どういった方法があるのか、模索していましたが、 takuya_nlさんのおかげで解決することが出来ました。 こういった報告を記載していただいて心から感謝しています。 本当に助かりました! ありがとうございました! |
nanasess |
投稿日時: 2018/1/15 11:05
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: EC-CUBE2系でのMySQL5.7利用について ちなみに、最新のコードでは mysqli ドライバを使うようになりましたので、 mysqli::server_version が使えます。
https://github.com/EC-CUBE/eccube-2_13/pull/173/files |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |