얼마전에 innodb로 변경하면서 mysql ->  mysqli로 함께 변경하는 것을 시도 했습니다.

 

그런데 변경을 하면 db접속 실패가 발생해서 mysql_innodb로 변경을 하고 mysqli로 변경은 나중에 검토해 보려고 마무리 지었었는데요.

 

오늘 db관련 질문들이 보이는 김에 저희 사이트 문제도 해결을 해보고 싶어 질문을 드립니다. 추후 php7으로 업그레이드시 해결을 해야 하는 문제라서요.

 

 

phpext : core, ereg, libxml, openssl, zlib, bcmath, bz2, calendar, dba, fileinfo, ftp, gettext, iconv, mbstring, shmop, simplexml, soap, sockets, phar, exif, sysvmsg, sysvsem, sysvshm, wddx, xml, xmlreader, xmlwriter, zip, memcache, mysqlnd, apcu, curl, gd, mcrypt, memcached, mysql, mysqli, pdo_mysql, readline, mhash, apc, zend opcache

 

저희 관리자페이지에서 나오는 php모듈 설치 내역입니다.

 

 

 

'master_db' => 
  array (
    'db_type' => 'mysql_innodb',
    'db_port' => '3306',
    'db_hostname' => ':/var/run/mysqld/mysqld.sock',
    'db_userid' => '????',
    'db_password' => '????',
    'db_database' => '????',
    'db_table_prefix' => 'xe_',
  ),
  'slave_db' => 
  array (
    0 => 
    array (
      'db_type' => 'mysql_innodb',
      'db_port' => '3306',
      'db_hostname' => ':/var/run/mysqld/mysqld.sock',
      'db_userid' => '????',
      'db_password' => '????',
      'db_database' => '????',
      'db_table_prefix' => 'xe_',
    ),

 

 

 

 

 

db접속 실패를 해결하는데 시도해 보아야 하는 것들이 어떤 것들이 있을까요??

  • profile
    어....

    'db_hostname' => ':/var/run/mysqld/mysqld.sock'

    이부분을

    'db_hostname' => 'localhost'
    로 바꿔주니 접속이 잘 되네요..

    이부분이 어떤 영향을 준건지.......
  • profile profile
    제가 알기로는 hostname에는 db가 설치된 위치가 들어가야 하는 걸로 알고 있습니다.
  • profile profile

    네. 당연히 설치위치를 적는 곳이죠.

    저도 관련기술자가 아니라 지금 시도한 결과만 알려드릴 수 밖에 없네요.

    말씀하신 곳에 mysql로 운영될때 위 적힌대로 기재되어 있었습니다.

    mysqli로 바꾸면 저 설치된 위치 적는 곳을 그대로 두면 접속오류가 발생해서 질문을 하게 된 것이고 localhost로 바꿔 보니 오류가 나지 않네요.

  • profile profile
    hostname 은 말그대로 웹 주소입니다.
    localhost라는것은 127.0.0.1 과도 같은 아이피입니다.

    :/var/run/mysqld/mysqld.sock 이라고 입력하셨던건 해당 위치를 mysql 에서 경로를 입력해줘야 했던것 같은데, 그럴필요 없이 localhost 라는 간단한 아이피주소로 연결해주는 것만으로도 작동될 수 있어요 :)

    mysqli 이라서가 아니라.. mysql도... 저렇게 세팅하신 것은 세팅의뢰를 드렸던 분에게 자세히 들어보시는게 좋으실듯..
  • profile profile
    비슷한 문제로 고민한 질문이 있네요.
    https://xe1.xpressengine.com/qna/23141060
  • profile

    mysql에서는 서버의 아이피 주소 대신 :/로 시작하는 소켓 주소를 입력하면 소켓으로 접속했지만, mysqli에서는 소켓 주소를 입력하는 파라미터가 따로 있고 :/ 문법은 인식하지 않습니다. 그래서 mysqli로 바꾸니까 안되는 거죠.

     

    소켓 접속 문법은 DB type마다 달라지기 때문에 당연히 XE에서 권장하는 방식은 아니고, 예전에 서버를 세팅해 주신 분이 아이피보다는 소켓을 접속하는 것이 효율적이라는 판단으로 저렇게 설정해 놓으신 듯 합니다.