早速追跡~
Menu.class.php の _getTableTabs() を見てみるとどうやら、
PMA_Util::currentUserHasPrivilege( 'TRIGGER', $this->_db, $this->_table )
の部分でfalseが返っている。
次に Util.class.php の currentUserHasPrivilege を見ると
if ($db !== null) { // need to escape wildcards in db and table names, see bug #3566 // (wildcard characters appear as being quoted with a backslash // when querying TABLE_SCHEMA.SCHEMA_PRIVILEGES) $db = str_replace(array('%', '_'), array('\%', '\_'), $db); /* * This is to take into account a wildcard db privilege * so we replace % by .* and _ by . to be able to compare * with REGEXP. * * Also, we need to double the inner % to please sprintf(). */ $query .= " AND '%s' REGEXP" . " REPLACE(REPLACE(TABLE_SCHEMA, '_', '.'), '%%', '.*')"; $schema_privileges = $GLOBALS['dbi']->fetchValue( sprintf( $query, 'SCHEMA_PRIVILEGES', $username, $priv, self::sqlAddSlashes($db) ) ); if ($schema_privileges) { return true; } } else { // There was no database name provided and the user // does not have the correct global privilege. return false; }
ここでtrueが返ってくるはずが返ってこない。。
どうやら
$db = str_replace(array('%', '_'), array('\%', '\_'), $db);
でDB名に % _ が入っている場合にエスケープするみたい。
コメントアウトを見てみると英語は解らないけど、どうやら
LIKE検索などする時の問題に対応するために行っている(MYSQLの問題?)
何かあったなそんなのが。。
結局、DB名を変更して無事解決でした。
0 件のコメント:
コメントを投稿