まず、この質問をグーグルで検索しましたが、同様の状況は見つかりませんでした。だから私は助けに感謝します。
私はテーブルを持っています:
CREATE TABLE tinypurses.purses (
id SMALLINT(6) NOT NULL AUTO_INCREMENT,
Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
keyyy CHAR(100) DEFAULT NULL,
LastSeed SMALLINT(6) NOT NULL DEFAULT 0,
PRIMARY KEY (id),
INDEX purses_id_index (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 2
CHARACTER SET utf8
COLLATE utf8_general_ci;
そこに新しいレコードを挿入しようとすると、エラーが発生しました。
データベース エラー: [MySQL][ODBC 5.1 ドライバー][mysqld-5.1.47-community]列 'LastSeed' を null にすることはできません
列「LastSeed」の値を明示的に設定したため、混乱しています。
statement.prepare(connection(), "insert into purses (time, keyyy, LastSeed) values(?, ?, ?)");
statement.param(1).set_as_systemtime(sysTime);
statement.param(2).set_as_string(key);
statement.param(3).set_as_long(1);
if (!stmt.execute())
{
LOG << statement.last_error(); // got this error here
}
さらに、このコードは Windows XP および 7 では正常に動作しますが、Windows 8 (同じバージョンの MySQL サーバーを使用) では動作しません。
なぜそれがそのような奇妙な方法で機能するのか、誰かが何か考えを持っていますか?
ありがとうございました。