• ベストアンサー

MySQLのvarcharについて

今までPostgreSQLを利用していたのですが、MySQLもテストで一回使ってみよと思い触ってみたところ・・・ varchar(20)のカラムに、文字列型で「4571170731101」という値を登録するとDB上では「2147483647」となってしまいます。 int型?とかに解釈されてるんでしょうか。意味がわかりません。 どなたか助けてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

一度こうしてみてください、それでも2147483647が表示されますか? CREATE TABLE `hoge`(`data` VARCHAR(20)); INSERT INTO `hoge`(`data`) VALUES('4571170731101'); SELECT `data` FROM `hoge`;

noname#152201
質問者

お礼

大変ありがとうございました。 初歩的なミスでした。 プリペアドステートメント上での型が認識されてませんでした。

noname#152201
質問者

補足

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

その他の回答 (2)

回答No.2

他人が客観的にアドバイスできる情報が、何ら提示されていません。 以下を提示してください。 (1)MySQLのバージョン (2)表定義 →show create tableの結果 (3)insert文の具体的な記述

noname#152201
質問者

お礼

大変ありがとうございました。 初歩的なミスでした。 プリペアドステートメント上での型が認識されてませんでした。

noname#152201
質問者

補足

> (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)    ~ 中略 ~ ); です。 よろしくお願いします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

それは単に型がvarcharではなくintになっているんだと見受けられます。 SHOW COLUMNS FROM テーブル で再確認してみてください

noname#152201
質問者

補足

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

関連するQ&A