Thoughts, stories and ideas.

My SQL

Function / Procedure 권한

grant create, alter routine on db.* to 'id'@'%';
flush PRIVILEGES;

GRANT EXECUTE ON FUNCTION `db`.`functionName` TO 'id'@'%'
flush PRIVILEGES;

AWS RDS 를 사용하는 경우, 슈퍼 권한이 없어서 바로 권한 부여가 어려움.
AWS > RDS > 파라미터 그룹 > log_bin_trust_function_creators > 값 1

MySQL Procedure 실행오류 in PHP

  • 오류 메시지 : MYSQL query error : Commands out of sync; you can't run this command now
  • 원인 : 보통 쿼리를 두가지 이상 실행할때 발생하는 오류
  • 해결 : 새로운 쿼리문이 실행되기 전에 메모리에 기존의 것을 제거시켜준다

## 1. PHP 
...
res = mysql_perform_query(conn, "...");
...
mysql_free_result(conn); # <<추가
mysql_perform_query(conn, "...");



## 2. CI (CodeIgniter)
 # 2-1) 아래 파일에 함수 추가
 # /system/database/drivers/mysqli/mysqli_result.php
 function next_result()
 {
     if (is_object($this->conn_id))
     {
         return mysqli_next_result($this->conn_id);
     }
 }

 # 2-2) 실행단
$queryStr = "CALL functionName(parameter)";
$query = $this->db->query($queryStr);
$res = $query->result();

//add this two line 
$query->next_result();
$query->free_result();
//end of new code

return $res;