
PDO::errorInfo 메서드는 오류 코드와 오류 메시지를 반환합니다. 오류 코드는 MySQL의 오류 코드를 의미하며, 오류 메시지는 오류 코드에 대한 설명입니다.
오류 코드 00000은 성공을 의미합니다. 하지만 오류 메시지는 \'General error: 1267 Illegal mix of collation(\'utf8_general_ci\' and collation(\'utf8mb4_0900_ai_ci\')\' 이라고 뜨는 이유는 MySQL이 utf8mb4_0900_ai_ci와 utf8_general_ci를 혼용하고 있기 때문입니다.
utf8mb4_0900_ai_ci는 MySQL 8.0 이상에서 사용하는 collation입니다. 하지만 utf8_general_ci는 MySQL 5.7 이하에서 사용하는 collation입니다. 두 collation을 혼용하면 오류가 발생하는 것입니다.
해결 방법은 두 collation을 동일하게 설정하는 것입니다. 예를 들어, utf8mb4_0900_ai_ci를 사용하는 경우 모든 테이블과 열의 collation을 utf8mb4_0900_ai_ci로 설정하면 오류가 해결됩니다.
또한, PDO::errorInfo 메서드의 세 번째 인자로 error_mode를 설정하여 오류 메시지를 더 자세히 알 수 있습니다. error_mode를 PDO::ERRMODE_EXCEPTION으로 설정하면 오류 메시지가 예외로 변환되어 더 자세히 알 수 있습니다.
2025-07-28 02:46