열의 현재 값입니다. countProductSelect 및 countProductInput - INTEGER NOT NULL;SQLite에서 새로 생성 된 열에서 데이터를 가져올 수 없습니다.
INTEGER DEFAULT NULL을 작성해야합니다.
아래의 PHP 코드. "countProductSelectTmp그런 열"-
문제는 그 오류를 받고, 시간 열 및 countProductSelectTmp countProductInputTmp 데이터 및 countProductSelect countProductInput를 업데이트하려고하지 않습니다.
이 오류를 어떻게 처리합니까? 아니면 원래의 문제를 해결하기 위해 더 많은 지식을 가진 알고리즘이 있습니까? fine manual에서
/**
* Updating the database
*
* @return bool
*/
protected function _updateDB()
{
$version = '3.8.4.0';
$this->_pdo->exec('
ALTER TABLE data ADD optionalCountProduct INTEGER DEFAULT NULL;
ALTER TABLE data ADD countProductSelectTmp INTEGER DEFAULT NULL;
ALTER TABLE data ADD countProductInputTmp INTEGER DEFAULT NULL;
UPDATE data SET countProductSelectTmp = countProductSelect, countProductInputTmp = countProductInput;
');
$this->_deleteSQLiteColumn(array('countProductSelect', 'countProductInput'));
// BUG
// countProductSelect and countProductInput can not get the value countProductSelectTmp and countProductInputTmp
$this->_pdo->exec('
ALTER TABLE data ADD countProductSelect INTEGER DEFAULT NULL;
ALTER TABLE data ADD countProductInput INTEGER DEFAULT NULL;
UPDATE data SET countProductSelect = countProductSelectTmp, countProductInput = countProductInputTmp;
UPDATE version SET id = "' . $version . '";
');
$this->_deleteSQLiteColumn(array('countProductSelectTmp', 'countProductInputTmp'));
return true;
}
/**
* Remove column from a SQLite Table
*
* @param array $column name of the column to remove
* @return bool
*/
protected function _deleteSQLiteColumn(array $column)
{
return (bool)$this->_pdo->exec('
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE backup(' . $this->_getFullColumnsString() . ');
INSERT INTO backup SELECT ' . $this->_getShortColumnsString() . ' FROM data;
DROP TABLE data;
CREATE TABLE data(' . $this->_getFullColumnsString($column) . ');
INSERT INTO data SELECT ' . $this->_getShortColumnsString($column) . ' FROM backup;
DROP TABLE backup;
COMMIT;
');
}
문제는 남아 있었다. 여전히 도움이 필요합니다. – Gemorroj
@ Gemorroj : 새 버전은 어떻게 생겼습니까? 나는 아침에 돌아 왔을 때 모습을 보일거야. –