这是我的建表语句,我想要更新某一天记录的数据,为什么这个sql操作会报错,说sqlite3数据库只支持xxx的数据类型?
CREATE TABLE IF NOT EXISTS device_info (
id INTEGER PRIMARY KEY,
devId TEXT UNIQUE NOT NULL,
deviceName TEXT,
deviceModel TEXT,
deviceType TEXT CHECK(deviceType IN ('IPC', 'NVR', 'SOLAR', 'OTHER')),
firmwareVersion TEXT,
hardwareVersion TEXT,
macAddress TEXT UNIQUE NOT NULL,
ipAddress INTEGER,
ipAddressString TEXT,
onlineStatus TEXT CHECK(onlineStatus IN ('ONLINE', 'OFFLINE', 'INITIALIZED', 'UN_INITIALIZED', 'NOT_CER')),
vmsId TEXT,
siteId INTEGER,
parentId INTEGER REFERENCES device_info(id),
username TEXT,
password TEXT,
qrCode TEXT,
channelName TEXT,
vender INTEGER,
supportFirmwareVersion TEXT,
upgradeStatus TEXT CHECK(upgradeStatus IN ('NONE', 'UPGRADING', 'SUCCESS', 'FAILED')),
protocol TEXT,
channel INTEGER,
smartDetectionCapability TEXT,
channelNum INTEGER,
deviceUpgrading INTEGER DEFAULT 0, --布尔类型改为INTEGER
httpsPort INTEGER,
addType TEXT,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
removed INTEGER DEFAULT 0, --布尔类型改为INTEGER
license_status TEXT,
due_time INTEGER,
capability INTEGER,
video_port INTEGER
);
const promoteSQL = `
UPDATE device_info SET username = @username, password = @password, addType = @addType, onlineStatus = @onlineStatus WHERE macAddress = @macAddress;
`;
public promoteToAddedDevice(macAddress: string, authDetails: { username, password }, onlineStatus: string): boolean {
const result = this.promoteToAddedStmt.run({
macAddress,
// username: AESUtils.encrypt(authDetails.username),
// password: AESUtils.encrypt(authDetails.password),
username: authDetails.username,
password: authDetails.password,
addType: DeviceAddType.MANUAL,
onlineStatus
});
return result.changes > 0;
}
最新发布