테스트 사이트 - 개발 중인 베타 버전입니다

그누보드 5.6.2x 버전에서 오류문의드립니다. 채택완료

짱구짱아아빠 1개월 전 조회 307

그누보드 5.6.2x  버전

 

1. member_list_exel_export.php   #line 455 

 

    // 최신 파일 기준 정렬 (최신 → 오래된)
    usort($logFiles, fn($a, $b) => filemtime($b) - filemtime($a));

 

## php 7.4 이상에서만 가능한듯 같은데..   이하버전에서도 가능할까요?

 

 

2. dbupgrade.php   #line 303

 

// 카카오톡 프리셋 테이블

        `kp_created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
        `kp_updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

 

## mysql 5.6.5 이전버전이라.. 

DATETIME 컬럼에 CURRENT_TIMESTAMP  지정 않되는것 같네요..

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
1개월 전

좋은 질문이에요 ? 상황을 정리해드릴게요.


1. member_list_exel_export.php

usort($logFiles, fn($a, $b) => filemtime($b) - filemtime($a));
  • fn(...) => ... 구문은 PHP 7.4에서 추가된 화살표 함수(Arrow Function) 문법입니다.

  • PHP 7.3 이하에서는 이 문법이 지원되지 않으므로 호환성 문제가 생깁니다.

해결 방법 (구버전 호환)

usort($logFiles, function($a, $b) {
    return filemtime($b) - filemtime($a);
});

? 이렇게 익명 함수(function)로 바꾸면 PHP 5.3 이상~7.x 전부 호환됩니다.
(그누보드 5.6.2x는 보통 PHP 5.4~8.x까지 쓰일 수 있어서 이 방식이 안전합니다.)


2. dbupgrade.php

`kp_created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`kp_updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  • MySQL 5.6.5 이상에서만 DATETIME 컬럼에 DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP 지원합니다.

  • 5.6.4 이하에서는 DATETIME정적인 DEFAULT 값(예: '0000-00-00 00:00:00' 또는 '1970-01-01 00:00:00')만 가능합니다.


해결 방법 (MySQL 5.6.5 미만 호환)

방법 A. TIMESTAMP 타입 사용

`kp_created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`kp_updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  • TIMESTAMP는 MySQL 5.0대부터 CURRENT_TIMESTAMP 지정 가능.

  • 단, TIMESTAMP는 기본적으로 UTC 변환이 걸리기 때문에, 애플리케이션 타임존 관리에 주의해야 합니다.

방법 B. DATETIME 그대로 쓰고 PHP에서 갱신

`kp_created_at` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`kp_updated_at` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',

그리고 INSERT/UPDATE 시 PHP 코드에서:

$now = date("Y-m-d H:i:s");
$sql = "INSERT INTO kakao_preset (kp_created_at, kp_updated_at, ...) 
        VALUES ('$now', '$now', ...)";

UPDATE 시:

$sql = "UPDATE kakao_preset 
        SET kp_updated_at = '".date("Y-m-d H:i:s")."', ... 
        WHERE id = ...";

? 이 방식이 가장 범용적이고, MySQL 5.1~8.0까지 전부 안전하게 동작합니다.


✅ 정리:

  • PHP 화살표 함수 → 구버전 호환 위해 function($a,$b){...} 로 변경하세요.

  • MySQL DATETIME + CURRENT_TIMESTAMP

    • 5.6.5 이상이면 그대로 사용 가능

    • 이하 버전이면 TIMESTAMP로 바꾸거나, DATETIME + PHP 코드에서 관리

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

timestamp  변경시  2개의 CURRENT_TIMESTAMP  사용오류라..

 

## member_list_exel_export.php   #line 303 

    `kp_created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `kp_updated_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,

 

 

이렇게 변경했네요..

그리고 하단  insert 부분은..

 

// 기본 프리셋 데이터 추가
 

    sql_query("INSERT INTO `{$g5['kakao5_preset_table']}`
        (`kp_type`, `kp_category`, `kp_preset_code`, `kp_preset_name`, `kp_template_name`, `kp_alt_send`, `kp_active`, `kp_created_at`, `kp_updated_at`)
        VALUES
        ('회원', '회원', 'CU-MB01', '회원가입완료', '', 1, 0, '$now', '$now'),
        ('최고관리자', '회원', 'AD-MB01', '회원가입완료', '', 1, 0, '$now', '$now'),

        ('작성자', '게시판', 'CU-BO01', '새 게시글 작성', '', 1, 0, '$now', '$now'),
        ('최고관리자', '게시판', 'AD-BO01', '새 게시글 작성', '', 1, 0, '$now', '$now'),
        ('그룹관리자', '게시판', 'AD-BO02', '새 게시글 작성', '', 1, 0, '$now', '$now'),
        ('게시판관리자', '게시판', 'AD-BO03', '새 게시글 작성', '', 1, 0, '$now', '$now'),
        ('작성자', '게시판', 'CU-BO02', '새 댓글 작성', '', 1, 0, '$now', '$now'),
        ('댓글 작성자', '게시판', 'CU-BO03', '새 댓글 작성', '', 1, 0, '$now', '$now'),
        ('답변글 작성자', '게시판', 'CU-BO04', '답변글 작성', '', 1, 0, '$now', '$now'),
        ('최고관리자', '투표', 'AD-VO01', '기타의견 작성', '', 1, 0, '$now', '$now'),

        ('주문자', '쇼핑몰', 'CU-OR01', '주문 완료', '', 1, 0, '$now', '$now'),
        ('최고관리자', '쇼핑몰', 'AD-OR01', '주문 완료', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-OR02', '무통장입금 주문 완료', '', 1, 0, '$now', '$now'),
        ('최고관리자', '쇼핑몰', 'AD-OR02', '무통장입금 주문 완료', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-OR03', '무통장입금 완료', '', 1, 0, '$now', '$now'),
        ('최고관리자', '쇼핑몰', 'AD-OR03', '무통장입금 완료', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-OR04', '(주문자)주문 취소', '', 1, 0, '$now', '$now'),
        ('최고관리자', '쇼핑몰', 'AD-OR04', '(주문자)주문 취소', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-OR05', '(관리자)주문 취소', '', 1, 0, '$now', '$now'),
        ('최고관리자', '쇼핑몰', 'AD-OR05', '(관리자)주문 취소', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-OR06', '반품', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-OR07', '품절', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-DE01', '배송 준비', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-DE02', '배송중', '', 1, 0, '$now', '$now'),
        ('주문자', '쇼핑몰', 'CU-DE03', '배송 완료', '', 1, 0, '$now', '$now'),
        ('요청자', '쇼핑몰', 'CU-ST01', '재입고알림', '', 1, 0, '$now', '$now'),

        ('문의자', '1:1문의', 'CU-IQ01', '문의 등록', '', 1, 0, '$now', '$now'),
        ('최고관리자', '1:1문의', 'AD-IQ01', '문의 등록', '', 1, 0, '$now', '$now'),
        ('문의자', '1:1문의', 'CU-IQ02', '답변 등록', '', 1, 0, '$now', '$now');
    ", true);
    $is_check = true;
}    
 

 

이렇게 변경하니 DB업그레이드 작동하네요..

 

 

## member_list_exel_export.php  는

 

data: {"status":"error","message":"잘못된 요청 입니다.","downloadType":1,"total":1,"current":1,"totalChunks":1,"currentChunk":1,"files":[],"zipFile":"","filePath":"https:\/\/www.abc.com\/data\/member_list\/20250917170609"}

 

이런에러만 나오네요..    

 

 

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

1개월 전

1. 다음과 같이 수정

</p>

<p>// PHP 7.4 이하 호환 버전

usort($logFiles, function($a, $b) {

  return filemtime($b) - filemtime($a);

});</p>

<p>


2. 다음과 같이 수정

</p>

<p>`kp_created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`kp_updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인