2016-08-04 3 views
0

수출 DML 문제,MySQL의 비트는 내가</p> 다음 <pre><code>create table bittest (id int(11),constant bit(1) default b'0'); </code></pre> <p>로 MySQL에서 테이블을 만든

insert into bittest(id) values (1); 
은 분명히 상수의 값이

선택 쿼리가

+------+----------+ 
| id | constant | 
+------+----------+ 
| 1 |   | 
+------+----------+ 
1 row in set (0.00 sec) 

로 인쇄되는 입니다 에게 값 비트로 표시되지 않습니다. 내가 mysqldump를 삽입 문을 사용하여 내보내기를 수행 할 때

은 내가 null 값을 삽입하지 않는 문제를 일으키는

INSERT INTO `bittest2` VALUES (1,'\0'); 

으로 수출됩니다.

해결 방법이 있습니까? MySQL 버전 5.7.13

+0

가능한 복제 [SELECT 사용하는 경우 MySQL의 BIT 필드 값을 볼 수 없습니다 (http://stackoverflow.com/questions/14248554/cant-see-mysql-bit-field- 가치 - 사용 - 선택) – Solarflare

+0

질문은 비슷하지만 수출 문제는 해결되지 않습니다. – rohitpal

+1

'\ 0'은 'null'이 아닙니다. 나는 왜 링크 된 질문이 당신의 질문에 대답하지 않는 지 모르겠다. 그러나'b'0 '는'\ 0'와 동일하다 ('\ 0'의 모든 비트는 0이다. 보통 8 비트가 아니다. '\ 0'을 볼 때 생각해보십시오). 비트는 정수가 아니며, 다시 삽입하면 ('insert'로) 잘 작동합니다.정확하게 0으로 처리 할 수도 있지만 올바르게 캐스팅 할 것이기 때문에 비트는 정수가 아닙니다. 정수가 필요하면 정수를 사용하십시오. 'tinyint (1)'또는 그것의 동의어'bool'. (mysql은 어떤 버전 이전에'tinyint'를'bit'에 사용했지만 더 표준에 부합하도록 변경했습니다). – Solarflare

답변

1

5.7.13에서 제대로 작동합니다. 명령 줄 도구의 화면에 표시 될 수있는 비트 값인 0의 출력을 착각하고 있습니다.

괜찮습니다. 괜찮습니다. 이 쿼리는 1 행을 표시합니다 :

select * from bittest where constant=b'0'; 

0 비트 값이 사람이 읽을 수있을 것으로 예상되는지 여부에 관계없이 디스플레이에 표시됩니다. 여기에 해결하는 문제는 단순히 없습니다

mysqldump -u UserName -p so_gibberish > c:\nate\bittest.sql 

:

함께 수출.

mysqldump는이 :

enter image description here

0

당신은 mysqldumphex-blob 옵션을 사용할 수 있습니다.

mysqldump -u[user-name] -p [db-name] [table-name] --hex-blob > [file-name].sql

그리고, SQL 파일에 도시 한 값을 다음.

  • 0x01

-0x00

  • b'1'-b'0' 그리고 당신은 덤프 파일을 제대로 가져올 수 있습니다.

    추가 정보 : Does mysqldump handle binary data reliably?

  • 관련 문제