이 테이블의 17000+ 레코드를 검색 할 때 어떤 전자 메일 주소를 사용하더라도 "MySQL은 빈 결과 집합 (예 : 0 행)을 반환했습니다."모든 관찰 된 값에 대해 mySQL simple SELECT가 실패했습니다.
조인을 시도 할 때이 문제점을 발견했습니다.
SELECT * FROM `actives` WHERE TRIM(`email`) = '[email protected]';
사람이 설명 할 수있는 문제를 제안 할 수 있습니다 : 스키마
CREATE TABLE `actives` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`person` int(11) NOT NULL,
`email` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
예 쿼리입니까?
mysql> SELECT `email` FROM `actives` WHERE TRIM(`email`) = TRIM('[email protected]');
Empty set (0.45 sec)
SELECT `email` FROM `actives` WHERE `email` RLIKE '[email protected]';
+-----------------------------+
| email |
+-----------------------------+
|[email protected]
+-----------------------------+
또한이 0 행이 mysqldump를 출력에 추가 요청에 따라
UPDATE `actives` SET `email` = TRIM(`email`)
영향을 가져옵니다 나는 이러한 시도 코멘트 당
SELECT `email` FROM `actives` LIMIT 0, 30
으로 테이블을 탐색 할 때 나는 값을 볼 수 있습니다 이메일 주소 끝에 카라 기 리턴 캐릭터 ...
-- MySQL dump 10.13 Distrib 5.5.28, for FreeBSD9.1 (i386)
--
-- Host: localhost Database: foo
-- ------------------------------------------------------
-- Server version 5.5.28-log
/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `actives`
--
DROP TABLE IF EXISTS `actives`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `actives` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`person` int(11) NOT NULL,
`email` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=310410 DEFAULT CHARSET=latin1 COMMENT='delete this, useless now';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `actives`
--
-- WHERE: true limit 1
LOCK TABLES `actives` WRITE;
/*!40000 ALTER TABLE `actives` DISABLE KEYS */;
INSERT INTO `actives` VALUES (1,0,'[email protected]\r');
/*!40000 ALTER TABLE `actives` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET [email protected]_TIME_ZONE */;
/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
/*!40111 SET [email protected]_SQL_NOTES */;
-- Dump completed on 2014-04-04 10:32:07
100 % 묻는 여기에이 성공적으로 바이올린, 그것은 프론트 엔드입니다. 당신은'SELECT * FROM actives WHITE TRIM (email) = TRIM ('[email protected]');을 시도해 보았습니다. 보이지 않는 문자 또한 클립 보드에 있습니다 (복사 & 붙여 넣기 이후). 커맨드 라인 클라이언트를 사용해 보셨습니까? – fancyPants
답장을 보내 주셔서 감사합니다. 나는 당신이 옳았다 고 확신하지만 계속 진행하는 방법을 확신 할 수 없다. 지금 게시 할 예제를 추가했습니다. 둘 다에 TRIM() 사용은 아무 결과도 얻지 않으며 그러나 도메인 및 전체 주소에 전자 우편 RLIKE는 결과를 얻는다. 그러나 TRIM()을 사용하여 테이블을 업데이트해도 행이 변경되지 않습니다. – jerrygarciuh
새로 추가 된 쿼리는 명령 줄에서 발생했습니다. – jerrygarciuh