MySQL은 항상 BIT 값을 공백으로 반환합니다.
테이블 만들기 스크립트에서 hasMultipleColors 필드를 BIT로 정의했습니다.
hasMultipleColors BIT NOT NULL,
INSERT를 실행할 때 이 BIT 필드 또는 다른 BIT 필드에 대해 경고가 발생하지 않지만 행을 선택하면 모든 BIT 값이 비어 있는 것으로 나타납니다.
명령줄에서 이러한 레코드를 수동으로 업데이트하려고 하면 홀수 효과가 발생합니다. 레코드가 일치하고 변경되었음을 보여줍니다(해당되는 경우). 그러나 항상 공백으로 표시됩니다.
서버 버전: 5.5.24-0ubuntu0.12.04.1(Ubuntu)
mysql> update pumps set hasMultipleColors = 1 where id = 1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> select hasMultipleColors from pumps where id = 1;
+-------------------+
| hasMultipleColors |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
mysql> update pumps set hasMultipleColors = b'0' where id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select hasMultipleColors from pumps where id = 1;
+-------------------+
| hasMultipleColors |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
무슨 생각 있어요?
비트 필드를 정수로 캐스팅해야 합니다.
mysql> select hasMultipleColors+0 from pumps where id = 1;
이는 버그 때문입니다. http://bugs.mysql.com/bug.php?id=43670 을 참조하십시오.상태 표시:고쳐지지 않습니다.
BIT 필드를 부호 없는 필드로 캐스팅할 수 있습니다.
SELECT CAST(hasMultipleColors AS UNSIGNED) AS hasMultipleColors
FROM pumps
WHERE id = 1
다음 값을 기준으로 1 또는 0을 반환합니다.hasMultipleColors
.
다음과 같이 변환을 수행해야 합니다.bit 1
인쇄할 수 없습니다.
SELECT hasMultipleColors+0 from pumps where id = 1;
여기서 더 보기: http://dev.mysql.com/doc/refman/5.0/en/bit-field-literals.html
여러분이 보는 효과의 실제 이유는, 그것이 정확하고 예상대로 이루어졌기 때문입니다.
그bit
필드에는 비트가 있으므로 비트가 반환됩니다. 단일 비트를 문자로 출력하려고 하면 지정된 비트 값(이 경우 0-폭 제어 문자)을 가진 문자가 표시됩니다.
일부 소프트웨어는 이를 자동으로 처리할 수 있지만 명령줄 MySQL의 경우 어떤 방식으로든 int로 캐스트해야 합니다(예: 0을 추가하여).
PHP와 같은 언어에서 문자의 서수 값은 다음을 사용하여 올바른 값을 제공합니다.ord()
함수(하나보다 긴 비트 필드에 대해 작업하려면 10진수에서 2진수 문자열로 변환해야 함).
편집:
변경되었다고 하는 꽤 오래된 소스를 발견했습니다. 따라서 MySQL을 업그레이드하면 모든 작업이 예상대로 더 잘 수행될 수 있습니다. http://gphemsley.wordpress.com/2010/02/08/php-mysql-and-the-bit-field-type/
언급URL : https://stackoverflow.com/questions/11609474/mysql-always-returning-bit-values-as-blank
'sourcecode' 카테고리의 다른 글
models.py 을 여러 파일로 분할합니다. (0) | 2023.08.11 |
---|---|
서로 다른 호스트 간에 도커 컨테이너를 이동하는 방법은 무엇입니까? (0) | 2023.08.06 |
mysql의 데이터 디렉토리를 이동하지 못함 (0) | 2023.08.06 |
sql server 2008 r2에서 숫자(18, 0)는 무엇입니까? (0) | 2023.08.06 |
최적의 데이터베이스 작성기 모델은 무엇입니까? (0) | 2023.08.06 |