0

MySQLリファレンスマニュアルから:

数値をENUM列に格納すると、その数値は可能な値へのインデックスとして扱われ、格納された値はそのインデックスを持つ列挙型メンバーになります。

SQL_SMALLINTしかし、 ODBCを使用してそのENUM列に値を書き込もうとすると、エラーHY000:1:1265(列のデータが切り捨てられます...)が発生します。

では、ODBCを使用してMySQL ENUM列に数値を書き込み、この数値が列挙型インデックスとして解釈されるようにするにはどうすればよいでしょうか。


編集:いくつかの詳細情報

列は次のように定義されます。

`TrackState` ENUM('NEWE','NEWN','VALID','INVISIBLE','CLOSED','DIED') NULL

ODBCで使用されるステートメントは次のとおりです。

INSERT INTO test (TrackState) VALUES (?)

そして私のCコードでは、符号なしの短い変数をバインドするためにとを使用SQLBindParameterしています。SQL_C_USHORTSQL_SMALLINT

TrackState列を通常のINT列に変更すると、数値(列挙型のインデックスとして解釈されたい)が正常に書き込まれます。

4

0 に答える 0