mysqli_innodb 질문

Extra Form
PHP PHP 7.1
CMS XpressEngine

XE 1.11.1 사용중입니다

 

저번에 데이터베이스 엔진을 innodb 로 바꾸고나서

 

모듈을 설치하려고 하니 " DB 테이블 생성에 실패했습니다 " 라는 문구가 뜨더라구요.

 

files/config/db.cofnig.php 에서

 

'db_type' => 'mysqli', 를 'db_type' => 'mysqli_innodb', 로 바꾸고 나니까

 

테이블 생성이 되길래 그대로 쓰고 있었는데

 

이게 쓰다보니까 관리자 문서 모듈에서 게시글 이동이 안되더라구요

 

테이블락이 걸린건지, " 문서 이동에 실패했습니다 " 라는 메세지가 뜹니다

 

mysqli_innodb 를 mysqli 로 다시 바꾸니 정상적으로 문서 이동이 되는데

 

모듈 설치할때마다 db.config.php 를 수동으로 수정해줘야하는건지...

 

원래 mysqli_innodb 설정을 쓰면 문서 이동이 안되는지 궁금합니다

  • profile

    1. 원래 그렇지 않습니다. XE로 만들어진 대형 사이트들 중 상당수가 아무 문제 없이 mysqli_innodb를 사용하고 있습니다. 사이트를 안정적으로 운영하려면 mysqli_innodb가 유일한 선택입니다.

    2. 단, 실제 DB 엔진을 InnoDB 방식으로 변환하지 않고 db.config.php만 mysqli_innodb로 수정하는 것은 무의미합니다. DB 엔진을 InnoDB로 바꿔놓고 db.config.php에서 그냥 mysqli를 쓰는 것도 좋은 방법은 아닙니다. 나중에 추가된 테이블들이 MyISAM 엔진으로 생성되었을 수 있습니다.

    3. InnoDB는 테이블락이 걸리지 않습니다. MyISAM 엔진으로 생성된 테이블이 섞여 있다면 그건 문제가 될 수도 있습니다.

    4. 오래된 서드파티 자료들 중 mysqli_innodb가 기본 제공하는 prepared statement 기능과 충돌하는 것이 종종 있습니다. 해당 자료가 잘못 만들어졌을 확률이 200%이지만, 급한 대로 db.config.php에서 use_prepared_statement 설정을 N으로 변경하면 해결되기도 합니다.