본문 바로가기
MySql

MySQL : 일반 오류 : 1366 잘못된 문자열 값

by 베이스 공부 2020. 9. 27.
반응형


SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE4\xD5\xABtZM...' for column 'Name'

이미 Stackoverflow에 게시 된 모든 답변을 읽었으며 문제도 Google 검색했지만 제안 된 모든 솔루션은 이미 내 코드에 있습니다. 데이터베이스, 테이블 및 모든 열에는 데이터 정렬 utf8_general_ci 가 있습니다. 아래에서 관련 코드를 볼 수 있습니다.

application.ini

resources.db.adapter = "Pdo_Mysql"
resources.db.params.charset = "utf8"
resources.db.params.host = "localhost"
resources.db.params.username = "********"
resources.db.params.password = "********"
resources.db.params.dbname = "dbname"

database.php

public static function getDb()
{
   if (self::$Db === NULL)
      self::$Db = Zend_Db_Table::getDefaultAdapter();
   return self::$Db;
}

model.php

$Values = array(
   'Id' => $this->Id,
   'Name' => $this->Name,
   'CreationDate' => $this->CreationDate,
);
$RowChanged = $Db->insert('TABLENAME', $Values);

encrypt ()

public static function encrypt($Data, $EncryptionKey)
{
   $AES = new Crypt_AES();
   $AES->setKey($EncryptionKey);
   return $AES->encrypt($Data);
}

CREATE TABLE IF NOT EXISTS `table` (
  `Id` mediumint(8) unsigned NOT NULL,
  `Name` varchar(200) DEFAULT NULL,
  `CreationDate` date NOT NULL,
  PRIMARY KEY (`Id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

질문 : 문제를 해결하고 데이터를 데이터베이스에 저장하려면 어떻게해야합니까?

 

해결 방법

 



많은 암호화 및 압축 함수는 result might contain arbitrary byte values. If you want to store these results, use a column with a VARBINARY or BLOB binary string data type. This will avoid potential problems with trailing space removal or character set conversion that would change data values, such as may 2 진이 아닌 문자열 데이터 유형 (CHAR, VARCHAR, TEXT)을 사용하는 경우 발생합니다.

 

참조 페이지 https://stackoverflow.com/questions/8291184

 

 

반응형

댓글