나는 MySQL의 쿼리의이 작은 조각에 문제가있는 출력을 나누기 . 업데이트 프로세스의 일종으로 응용 프로그램에서 프로그래밍 방식으로 생성됩니다. 결과는 예상대로이며 아무런 문제없이 뷰를 사용할 수 있습니다.mysqldump는 (0), " 0"또는 0x0으로
CHAR (0) 분리 필 드를 생성하는 subselect에서 문제점이 시작됩니다.
전체 데이터베이스를 내보낼 때. 이보기에서 출력은이보기가 덤프되어야하는 부분에서 정확히 끊어집니다. 완전한 뷰 정의 문자열은 키워드 SEPARATOR
바로 다음에 끝납니다. 완전한 휴식이 없습니다. 결과적으로 덤프 파일이 불완전 해져서 손상되어 다시 가져올 수 없습니다.
GROUP_CONCAT(`node`.`name` SEPARATOR "\0")
GROUP_CONCAT(`node`.`name` SEPARATOR CHAR(0))
GROUP_CONCAT(`node`.`name` SEPARATOR 0x0)
결과는 항상 동일합니다 :
/*!50001 DROP TABLE IF EXISTS `person_nodes`*/;
/*!50001 DROP VIEW IF EXISTS `person_nodes`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
/*!50001 SET character_set_client = utf8 */;
/*!50001 SET character_set_results = utf8 */;
/*!50001 SET collation_connection = utf8_general_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `person_nodes` AS select `p`.`person_id` AS `person_id`,`p`.`prename` AS `prename`,`p`.`name` AS `name`,(select group_concat(`node`.`name` separator ' */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
가 지금 내가이 문제를 해결하는 방법 단서를 해달라고
내가 널 문자를 처리하기 위해 다른 접근을 시도했다. 이 데이터베이스를mysqldump
을 통해 덤프하고
mysql
을 통해 다른 곳으로 가져올 수 있어야합니다. 이는 배포 프로세스의 일종입니다.
현재 내가 mysql Ver 14.14 Distrib 5.5.50, for debian-linux-gnu (x86_64) using readline 6.3
을 사용하고 내가 그런 식 덤프을 만드는 오전 :
mysqldump -u <user> -p<pass> <dbname> -r <dumpfile>
또는
mysqldump -u <user> -p<pass> <dbname> > <dumpfile>
사람이 내가 mysqldump는 출력을 파괴 방지 할 수있는 방법 아이디어가 있습니까? 어쩌면 이것이 문자 집합/변환 문제일까요? 기본적으로 나는 utf8
/utf8_general_ci
을 사용하고 있습니다.
정보 : MysqlWorkbench 나 Navicat 같은 도구는보기를 편집 할 수 없습니다. 편집 가능한 결과 문자열도 같은 방식으로 손상됩니다.