질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS XpressEngine

오늘이 저희 사이트 8주년 생일이라 출석부에 문구를 생일 축하 문구로 할 수 있게 미리 입력된 문구를 넣어 놓았는데요.

평소보다 약간 더 많은 글자수 인데 

 

 db에서 글자수가 너무 적게 되어 있어 인삿말  insert에서 글자가 잘려버리네요.

 

 <column name="greetings" type="varchar" size="250" notnull="notnull" />

 

 

        if (!$oDB->isColumnExists("attendance", "greetings"))
        {
            $oDB->addColumn("attendance", "greetings", "varchar", 20);
        }

 

 

db에서 만들어질 때 20으로 만들어진 것 같습니다.

 

이걸 조금 더 3배 정도로 안전하게 늘리는 방법이 어떤 것일까요?? 

누구나 그렇지만 db를 건드리는건 무서워 하죠 ㅎ

  • profile
    코드에 추가를 하나 db를 수정하나 동일한 결과여서 db를 그냥 수정했네요.
  • profile
    isColumnExists로 체크후 수정하는건 자료 배포 이후 DB 구조가 변경되었을때 사용자가 쉽게 업데이트할수 있도록 하는 것으로, 개인이 수정해서 사용하는건 그냥 phpmyadmin에서 변경하셔도 됩니다.

    p.s.) XE는 열 추가/삭제만 지원하고 열 수정(크기, 타입)은 지원하지 않습니다. 정말 수정해야 한다면 _query로 직접 쿼리해야 합니다.
  • profile profile
    그럼 자료에서 컬럼 크기를 수정하는 코드가 제공되어도 XE를 사용하는 사이트에서는 db수정이 일어나지 않는건가요?
  • profile profile
    열 수정을 DB 클래스에서 기본 제공하지 않는다는 겁니다. 따라서, 자료에서 열 크기를 수정하는 코드를 제공하면 당연히 수정이 이루어집니다.
  • profile profile

    기본 제공하는 함수와 XML만을 사용해서는 구현할 수 없다는 뜻일 뿐이므로, ALTER TABLE 쿼리를 직접 작성한다면 얼마든지 가능합니다. 실제로 이렇게 하는 자료도 있을 거고요. 라이믹스용으로 만들어진 자료라면 $oDB->modifyColumn()을 사용할 수도 있지만, 그대로 배포해 버리면 XE에서는 에러납니다.

  • profile profile

    XE는 안된다 라이믹스 전용은 가능하다 라는 이야기 내용이 혼돈이 생기네요.

    https://github.com/bjrambo/attendance/commit/f812078cefb82bd6e6375af09ff6e31018bccbcc

    위 커밋 보면 XE 자료인데 $oDB->modifyColumn('attendance', 'ipaddress', 'varchar', '128', '', true);
    사용이 있습니다. 이게 라이믹스에게나 유효하다는 건지..

    코드를 제공하면 당연히 수정이 이루어진다의 코드가 이게 아니란건지..

     

    종합해 본다면 저 커밋 그대로 배포가 되면 XE에서는 에러가 난다 그러니 고쳐야 한다 정도로 이해가 되네요.

  • profile profile
    해당 개발자분이 라이믹스도 개발하시는 분이시다 보니 헷갈려서 잘못 넣으신 걸로 보입니다.
    XE는 modifyColumn 함수를 제공하지 않습니다.
  • profile profile
    네. 완벽 이해가 되었습니다!
  • profile
    8주년이라구요? 우와.... 축하드립니다 대단하세요!!!
  • profile profile

    네. 감사합니다. 2012년 5월 10에 개설된 커뮤니티에요. XE와 만난지도 8년이 넘었다는 이야기네요 ㅎ