プロが教えるわが家の防犯対策術!

今までPostgreSQLを利用していたのですが、MySQLもテストで一回使ってみよと思い触ってみたところ・・・

varchar(20)のカラムに、文字列型で「4571170731101」という値を登録するとDB上では「2147483647」となってしまいます。

int型?とかに解釈されてるんでしょうか。意味がわかりません。

どなたか助けてください。

A 回答 (3件)

一度こうしてみてください、それでも2147483647が表示されますか?



CREATE TABLE `hoge`(`data` VARCHAR(20));
INSERT INTO `hoge`(`data`) VALUES('4571170731101');
SELECT `data` FROM `hoge`;

この回答への補足

4571170731101 が登録されます。

DB側じゃなくプログラム側ですかね。。。

プログラムは、phpを利用してますが
値をDB登録前に「var_dump」で確認してみると「4571170731101」なんです。

補足日時:2009/06/19 12:21
    • good
    • 0
この回答へのお礼

大変ありがとうございました。

初歩的なミスでした。
プリペアドステートメント上での型が認識されてませんでした。

お礼日時:2009/06/19 13:33

他人が客観的にアドバイスできる情報が、何ら提示されていません。


以下を提示してください。

(1)MySQLのバージョン
(2)表定義
→show create tableの結果
(3)insert文の具体的な記述

この回答への補足

> (1)MySQLのバージョン

MySQL 4.0.24

> (2)表定義
→show create tableの結果

CREATE TABLE `items` (
`id` decimal(10,0) NOT NULL default '0',
  ~ 中略 ~
`image_address` varchar(20) default NULL,
  ~ 中略 ~
PRIMARY KEY (`id`)
) TYPE=MyISAM

>(3)insert文の具体的な記述

create table items (
id decimal(10,0) not null,
  ~ 中略 ~
image_address varchar(20)
   ~ 中略 ~
);

です。

よろしくお願いします。

補足日時:2009/06/19 12:19
    • good
    • 0
この回答へのお礼

大変ありがとうございました。

初歩的なミスでした。
プリペアドステートメント上での型が認識されてませんでした。

お礼日時:2009/06/19 13:33

それは単に型がvarcharではなくintになっているんだと見受けられます。



SHOW COLUMNS FROM テーブル

で再確認してみてください

この回答への補足

だと思い確認したんですが
varcharなんですよ。。。

補足日時:2009/06/18 18:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!