2016-09-08 2 views
1

오류없이 테이블 행에 업데이트를 쓰지 못하는 것 같습니다.
쿼리 세부 정보는 성공한 것으로보고되는 간단한 UPDATE이지만 데이터는 데이터베이스 테이블 행에 기록되지 않습니다.Innodb on MariaDB 쓰기가 자동으로 실패 함

모든 SQL 읽기/쓰기를 처리하는 데 사용하는 개체가 있습니다. 성공적인 트랜잭션 이후 Object의 덤프가 포함됩니다. 즉시 데이터가 제대로 저장되어 다음이 실행 후, 그래서 그것이 디스크에 메모리에서 데이터를 플러시의 일종이라고 생각, 나는 스크립트의 실행을 중지하면

[pdo:Gibbon\core\security:private] => Gibbon\core\sqlConnection Object 
    (
     [pdo:protected] => PDO Object 
      (
      ) 

     [success:Gibbon\core\sqlConnection:private] => 1 
     [querySuccess:Gibbon\core\sqlConnection:private] => 1 
     [result:Gibbon\core\sqlConnection:private] => PDOStatement Object 
      (
       [queryString] => UPDATE `gibbonPerson` 
     SET `passwordStrong` = :passwordStrong, `passwordStrongSalt` = :passwordStrongSalt, `password` = :password WHERE `gibbonPersonID` = :gibbonPersonID 
      ) 

     [data:Gibbon\core\sqlConnection:private] => Array 
      (
       [:passwordStrong] => $2y$12$1EZ30jh/CJ/gNwo/alLLlOW/HbcfxCv7tveZgU5jeJ//y.ayiqto2 
       [:passwordStrongSalt] => 
       [:password] => 
       [:gibbonPersonID] => 0000000001 
      ) 

     [query:Gibbon\core\sqlConnection:private] => UPDATE `gibbonPerson` 
     SET `passwordStrong` = :passwordStrong, `passwordStrongSalt` = :passwordStrongSalt, `password` = :password WHERE `gibbonPersonID` = :gibbonPersonID 
     [error:Gibbon\core\sqlConnection:private] => 
     [table:Gibbon\core\sqlConnection:private] => gibbonPerson 
     [identifier:Gibbon\core\sqlConnection:private] => gibbonPersonID 
     [where:Gibbon\core\sqlConnection:private] => 
     [version:Gibbon\core\sqlConnection:private] => 5.5.50-MariaDB 
     [lastQuery] => UPDATE `gibbonPerson` 
     SET `passwordStrong` = :passwordStrong, `passwordStrongSalt` = :passwordStrongSalt, `password` = :password WHERE `gibbonPersonID` = :gibbonPersonID 
     [insert] => 
    ) 

() (사망) 실패. 서버에 대한 내 설정은 다음과 같습니다

character-set-server = utf8 
collation-server = utf8_unicode_ci 
default-storage-engine = InnoDB  
innodb_change_buffering = all  
innodb_buffer_pool_size = 800M  
innodb_log_file_size = 256M  
innodb_log_buffer_size = 4M  
innodb_flush_log_at_trx_commit = 2  
innodb_thread_concurrency = 8  
innodb_flush_method = O_DIRECT  
innodb_file_per_table = ON  
max_heap_table_size = 64M  
query_cache_size = 32M  
table_cache = 256  
read_buffer_size = 8M  
read_rnd_buffer_size = 8M  
sort_buffer_size = 8M  
tmp_table_size = 64M 

내 연결 설정은 다음과 같습니다

private function setSQLMode() 
{ 
    $config = new config(); 
    $setting = $config->get('setting'); 
    if (isset($setting['System']['installtype']) && $setting['System']['installtype'] == 'Production') 
     $this->getConnection()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);  // Production 
    else 
     $this->getConnection()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Testing and Development 
    $this->getConnection()->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
    $this->getConnection()->setAttribute(PDO::ATTR_AUTOCOMMIT, true); 
    $this->version = $this->getVersion(); 
    if ($this->version > '5.7') //Default for 5.7.x is STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER 
     $result = $this->getConnection()->prepare("SET SESSION `sql_mode` = ''"); 
    elseif ($this->version > '5.6') // Default for 5.6.x is NO_ENGINE_SUBSTITUTION 
     $result = $this->getConnection()->prepare("SET SESSION `sql_mode` = ''"); 
    else // Default for < 5.6 is '' 
     $result = $this->getConnection()->prepare("SET SESSION `sql_mode` = ''"); 
    $result->execute(array()); 
} 

는 사람이 여기 일이 어떻게 될 것인가에 관해서는 어떤 생각을 가지고 있습니까? 나는 설정을 변경하고 침묵의 다른 게시물을 읽고 데이터를 쓰지 못하고 실패했습니다. 어떤 도움을 주시면 감사하겠습니다! 크레이그

RAM 당신은 아마도 다음에 미친 같이 교환하는,

쇼 작은 1기가바이트 "기계"는 표를

gibbonPerson CREATE TABLE `gibbonPerson` (
 `gibbonPersonID` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT, 
 `title` varchar(5) CHARACTER SET utf8 NOT NULL, 
 `surname` varchar(30) CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `firstName` varchar(30) CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `preferredName` varchar(30) CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `officialName` varchar(150) CHARACTER SET utf8 NOT NULL, 
 `nameInCharacters` varchar(20) CHARACTER SET utf8 NOT NULL, 
 `gender` enum('M','F','Other','Unspecified') CHARACTER SET utf8 NOT NULL DEFAULT 'Unspecified', 
 `username` varchar(20) CHARACTER SET utf8 NOT NULL, 
 `password` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `passwordStrong` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `passwordStrongSalt` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `passwordForceReset` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N' COMMENT 'Force user to reset password on next login.', 
 `status` enum('Full','Expected','Left','Pending Approval') CHARACTER SET utf8 NOT NULL DEFAULT 'Full', 
 `canLogin` enum('Y','N') CHARACTER SET utf8 NOT NULL DEFAULT 'Y', 
 `gibbonRoleIDPrimary` int(3) unsigned zerofill NOT NULL, 
 `gibbonRoleIDAll` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `dob` date DEFAULT NULL, 
 `email` varchar(50) CHARACTER SET utf8 DEFAULT NULL, 
 `emailAlternate` varchar(50) CHARACTER SET utf8 NOT NULL, 
 `image_240` varchar(255) CHARACTER SET utf8 DEFAULT NULL, 
 `lastIPAddress` varchar(15) CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `lastTimestamp` timestamp NULL DEFAULT NULL, 
 `lastFailIPAddress` varchar(15) CHARACTER SET utf8 DEFAULT NULL, 
 `lastFailTimestamp` timestamp NULL DEFAULT NULL, 
 `failCount` int(1) DEFAULT '0', 
 `address1` mediumtext CHARACTER SET utf8 NOT NULL, 
 `address1District` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `address1Country` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `address2` mediumtext CHARACTER SET utf8 NOT NULL, 
 `address2District` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `address2Country` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `phone1Type` enum('','Mobile','Home','Work','Fax','Pager','Other') CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `phone1CountryCode` varchar(7) CHARACTER SET utf8 NOT NULL, 
 `phone1` varchar(20) CHARACTER SET utf8 NOT NULL, 
 `phone3Type` enum('','Mobile','Home','Work','Fax','Pager','Other') CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `phone3CountryCode` varchar(7) CHARACTER SET utf8 NOT NULL, 
 `phone3` varchar(20) CHARACTER SET utf8 NOT NULL, 
 `phone2Type` enum('','Mobile','Home','Work','Fax','Pager','Other') CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `phone2CountryCode` varchar(7) CHARACTER SET utf8 NOT NULL, 
 `phone2` varchar(20) CHARACTER SET utf8 NOT NULL, 
 `phone4Type` enum('','Mobile','Home','Work','Fax','Pager','Other') CHARACTER SET utf8 NOT NULL DEFAULT '', 
 `phone4CountryCode` varchar(7) CHARACTER SET utf8 NOT NULL, 
 `phone4` varchar(20) CHARACTER SET utf8 NOT NULL, 
 `website` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `languageFirst` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `languageSecond` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `languageThird` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `countryOfBirth` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `ethnicity` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `citizenship1` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `citizenship1Passport` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `citizenship1PassportScan` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `citizenship2` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `citizenship2Passport` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `religion` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `nationalIDCardNumber` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `nationalIDCardScan` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `residencyStatus` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `visaExpiryDate` date DEFAULT NULL, 
 `profession` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `employer` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `jobTitle` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `emergency1Name` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `emergency1Number1` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `emergency1Number2` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `emergency1Relationship` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `emergency2Name` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `emergency2Number1` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `emergency2Number2` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `emergency2Relationship` varchar(30) CHARACTER SET utf8 NOT NULL, 
 `gibbonHouseID` int(3) unsigned zerofill DEFAULT NULL, 
 `studentID` varchar(10) CHARACTER SET utf8 NOT NULL, 
 `dateStart` date DEFAULT NULL, 
 `dateEnd` date DEFAULT NULL, 
 `gibbonSchoolYearIDClassOf` int(3) unsigned zerofill DEFAULT NULL, 
 `lastSchool` varchar(100) CHARACTER SET utf8 NOT NULL, 
 `nextSchool` varchar(100) CHARACTER SET utf8 NOT NULL, 
 `departureReason` varchar(50) CHARACTER SET utf8 NOT NULL, 
 `transport` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `transportNotes` text CHARACTER SET utf8 NOT NULL, 
 `calendarFeedPersonal` text CHARACTER SET utf8 NOT NULL, 
 `viewCalendarSchool` enum('Y','N') CHARACTER SET utf8 NOT NULL DEFAULT 'Y', 
 `viewCalendarPersonal` enum('Y','N') CHARACTER SET utf8 NOT NULL DEFAULT 'Y', 
 `viewCalendarSpaceBooking` enum('Y','N') CHARACTER SET utf8 NOT NULL DEFAULT 'N', 
 `gibbonApplicationFormID` int(12) unsigned zerofill DEFAULT NULL, 
 `lockerNumber` varchar(20) CHARACTER SET utf8 NOT NULL, 
 `vehicleRegistration` varchar(20) CHARACTER SET utf8 NOT NULL, 
 `personalBackground` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `messengerLastBubble` date DEFAULT NULL, 
 `privacy` text CHARACTER SET utf8, 
 `dayType` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Student day type, as specified in the application form.', 
 `gibbonThemeIDPersonal` int(4) unsigned zerofill DEFAULT NULL, 
 `gibboni18nIDPersonal` int(4) unsigned zerofill DEFAULT NULL, 
 `studentAgreements` text CHARACTER SET utf8, 
 `googleAPIRefreshToken` varchar(255) CHARACTER SET utf8 NOT NULL, 
 `receiveNotificationEmails` enum('Y','N') CHARACTER SET utf8 NOT NULL DEFAULT 'Y', 
 `fields` text CHARACTER SET utf8 NOT NULL COMMENT 'Serialised array of custom field values', 
 PRIMARY KEY (`gibbonPersonID`), 
 UNIQUE KEY `username` (`username`), 
 KEY `username_2` (`username`,`email`) 
) ENGINE=InnoDB AUTO_INCREMENT=1817 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 
+0

기기의 RAM 용량은 얼마입니까? (당신의 my.cnf를 찾고 있습니다.) –

+0

BEGIN ... COMMIT을 사용하고 있습니까? UPDATE를 보자. 그리고'SHOW CREATE TABLE'. –

+0

릭의 답을 가지고 질문을 편집합니다. 이걸 나를 찾아 주셔서 감사합니다. 크레이그 –

답변

0

만들기 ... 이렇게 작은 가상 머신에 1G입니다 "높음"설정 :

innodb_buffer_pool_size = 800M  --> 60M 
max_heap_table_size = 64M   --> 5M 
query_cache_size = 32M    --> 5M 
table_cache = 256     --> 100 
read_buffer_size = 8M    --> 4M 
read_rnd_buffer_size = 8M   --> 4M 
sort_buffer_size = 8M    --> 4M 
tmp_table_size = 64M    --> 5M 

열 사이에 배열을 표시하지 마십시오. 시민권, 주소, 전화 번호 등을위한 추가 테이블 만들기

:password은 어떻게 대체됩니까? 적절하게 이스케이프되고 인용되어 있습니까? 실패한 경우 특수 문자는 무엇입니까?

+0

릭 감사합니다. 테이블은 내 것이 아니고 팀에게 물어볼 것입니다.이 작은 설정을 사용해 보겠습니다. –

관련 문제