mysql:15374
From: Etsuo SUMIYA <Etsuo SUMIYA <sumiya-e@xxxxxxxxxx>>
Date: Thu, 19 Aug 2010 20:46:26 +0900 (LMT)
Subject: [mysql 15374] int column への2147483648
sumiyaといいます。 mysql-5.1.47-winを使用していて、mysql_stmt_prepare()を使い、データ ベースへ書き込むアプリケーションを開発していますが、添付のプログラ ムを実行すると、 mysql> select * from t; +------------+ | c1 | +------------+ | 2147483647 | | 0 | +------------+ 2 rows in set (0.03 sec) となり、2147483648が書き込まれずに、0になってしまいます。 mysqlコマンドでは書き込めるのですが、プログラムインタフェースから は上の結果となります。 環境はWindows XP SP3 Visual studio 2003 を使用しております。 どなたか、情報をお持ちの方はアドバイスをお願いします。 --- テーブル --- CREATE TABLE `t` ( `c1` int(10) unsigned DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=sjis --- ここまで --- --- プログラム --- #include "stdafx.h" #include <config-win.h> #include <mysql.h> MYSQL *mysql; int mytest(); int _tmain(int argc, _TCHAR* argv[]) { mytest(); return 0; } int mytest() { static MYSQL_BIND bind[1]; int result; unsigned int stat; my_bool statnull = 0; char *insert = "INSERT INTO t (c1) values (?)"; MYSQL_STMT *tstmt; MYSQL *mymysql; mysql = mysql_init(NULL); if(mysql) { mymysql = mysql_real_connect(mysql, "192.168.48.15", "test", "", "test", 0, NULL, CLIENT_MULTI_STATEMENTS); } else exit(-1); tstmt = mysql_stmt_init(mysql); result = mysql_stmt_prepare(tstmt, insert, (unsigned long)strlen(insert)); memset(bind, 0, sizeof(bind)); bind[0].buffer_type = MYSQL_TYPE_LONG; bind[0].buffer = (char *)&stat; bind[0].length = 0; bind[0].is_null = &statnull; result = mysql_stmt_bind_param(tstmt, bind); stat = 0x80000000-1; result = mysql_stmt_execute(tstmt); stat = 0x80000000; result = mysql_stmt_execute(tstmt); return(0); } --- ここまで ---
-> 15374 2010-08-19 20:46 [Etsuo SUMIYA <sumiya] int column への2147483648 15375 2010-08-19 21:50 ┗[Mikiya Okuno <mikiya] 15376 2010-08-20 08:23 ┗[Etsuo SUMIYA <sumiya] 15377 2010-08-20 22:10 ┗[SAKAI Kei <sak2@xxxx] 15378 2010-08-21 10:39 ┗[Etsuo SUMIYA <sumiya] 15379 2010-08-21 18:31 ┗[SAKAI Kei <sak2@xxxx] 15381 2010-08-24 08:56 ┗["Watanabe Tomoyuki" ]