質問 > 管理機能 > DB処理でエラーが発生しました。MAX_JOIN_SIZEについて |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kono |
投稿日時: 2017/4/7 20:40
対応状況: −−−
|
半人前 登録日: 2012/3/14 居住地: 投稿: 24 |
DB処理でエラーが発生しました。MAX_JOIN_SIZEについて [EC-CUBE] 2.13.2
[レンタルサーバ] iClusta+ [OS] Linux バージョン不明 [PHP] PHP 5.6.25 [データベース] MySQL 5.1.47 [WEBサーバ] Apache2.2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ お世話になります。 下記エラーが解消されずに困っております。 [Native code: 1104] [Native message: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay] 過去の情報や検索から、data/class/SC_Query.phpの80行目、もしくは84行目に $this->query("SET SQL_BIG_SELECTS=1");を記述すればエラーの解消がされるとの情報だったので、やってみましたが Fatal error(E_ERROR): Call to a member function sfChangeMySQL() on null on というエラーがでてしまい、お手上げ状態です。 参照したURLは http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9179&forum=11 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=13758&forum=11 記述する行が悪いのでしょうか。 if ($new) { $this->conn = MDB2::connect($dsn, $options); } else { $this->conn = MDB2::singleton($dsn, $options); } if (!PEAR::isError($this->conn)) { $this->conn->setCharset('utf8'); $this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC); $this->query("SET SQL_BIG_SELECTS=1"); } ホスティング会社へ確認した際には、$this->query("SET SQL_BIG_SELECTS=1");の後に SET SQL_MAX_JOIN_SIZE=10000を記述してはどうか、とアドバイスをいただきました。 (エラーが解消されるかは不明だけど、以前も同じ問合せがあった際に、上記のような設定をしていたお客様がいたとのこと。) $this->query("SET SQL_BIG_SELECTS=1"); $this->query("SET SQL_MAX_JOIN_SIZE=10000"); で試してみても、同じFatal errorが出てしまいます。 皆さんのどうかよろしくお願いいたします。 |
red |
投稿日時: 2017/4/8 7:57
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1570 |
Re: DB処理でエラーが発生しました。MAX_JOIN_SIZEについて SC_DB_DBFactory_MYSQL.php の 365辺りに
$objQuery->exec("SET SQL_BIG_SELECTS=1"); と書くと動きそうな気がします
|
kono |
投稿日時: 2017/4/10 11:57
対応状況: 確認中
|
半人前 登録日: 2012/3/14 居住地: 投稿: 24 |
Re: DB処理でエラーが発生しました。MAX_JOIN_SIZEについて お返事ありがとうございます。
public function getDummyFromClauseSql() { $objQuery->exec("SET SQL_BIG_SELECTS=1"); return 'FROM DUAL'; } と追記して確認しましたが、同じエラーが表示されております。 |
red |
投稿日時: 2017/4/10 15:57
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1570 |
Re: DB処理でエラーが発生しました。MAX_JOIN_SIZEについて $objQuery->exec('SET SESSION storage_engine = InnoDB');
と書いてある行があると思うので、その下にいれてください
|
kono |
投稿日時: 2017/4/10 16:53
対応状況: 解決済
|
半人前 登録日: 2012/3/14 居住地: 投稿: 24 |
Re: DB処理でエラーが発生しました。MAX_JOIN_SIZEについて redさん、ありがとうございます!
エラーは出ず、正常に表示されました。ありがとうございます。 SC_DB_DBFactory_MYSQL.php /** * 各 DB に応じた SC_Query での初期化を行う * * @param SC_Query $objQuery SC_Query インスタンス * @return void */ public function initObjQuery(SC_Query &$objQuery) { $objQuery->exec('SET SESSION storage_engine = InnoDB'); $objQuery->exec("SET SQL_BIG_SELECTS=1"); $objQuery->exec("SET SESSION sql_mode = 'ANSI'"); } こうしないと解決できなかったことなんですね。 私では到底辿りつけない情報を教えていただき、感謝いたします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |