NetCommons2でxampp環境に復元した時に_INVALID_INPUTエラーがでたので対応


NetCommons2で開発環境に復元した時に、トップページで_INVALID_INPUTが表示されて、この画面をリダイレクトし続ける症状がでました。
原因を調査したので、記事として残します。

_INVALID_INPUTエラーは入力不備の内容のため、原因が他の場合があります。

原因

DB復元時に必要なテーブルが抜けていたため、_INVALID_INPUTエラーがでてました。
全DBテーブルを復元したら直りました。

エラー画面

_INVALID_INPUT発生個所

maple/nccore/db/DbObjectAdodb.class.php
    /**
     * エラーメッセージ追加処理
     * @param   string  error_no
     * @param   string  error_mes
     * @access  public
     */
    function addError($error_no=null, $error_mes=null)
    {
        $container =& DIContainerFactory::getContainer();
        $actionChain =& $container->getComponent("ActionChain");
        $errorList =& $actionChain->getCurErrorList();
        if($error_no == null && $error_mes == null) {
            $session =& $container->getComponent("Session");
            if(isset($session) && $session->getParameter("_php_debug") == _ON) {
                $errorList->add($this->ErrorNo(), $this->ErrorMsg(). ":\n". $this->_bck_sql);
            } else if (defined('_INVALID_INPUT')) {
                // ここで落ちていた。
                $errorList->add($this->ErrorNo(), _INVALID_INPUT);
                // 下記を追記。落ちが原因のSQLを画面表示できます。
                $errorList->add($this->ErrorNo(), $this->ErrorMsg(). ":\n". $this->_bck_sql);
            } else {
                $errorList->add($this->ErrorNo(), "Security Error!  Unauthorized input.");
            }
        } else {
            $errorList->add($error_no, $error_mes);
        }
    }

原因2

xampp環境にmysqlインポート時にdefault-character-setオプションを付け忘れ、エラーがでてDBテーブルを全て復元しきりませんでした。

正解コマンド

> mysql -u root --default-character-set=utf8 db_name < dump.sql

間違いコマンド

> mysql -u root db_name < dump.sql
ERROR at line 2612: Unknown command '\n'.

参考URL

【MySQL】Unknown command ‘\”. at softelメモ
https://www.softel.co.jp/blogs/tech/archives/3397