ここから質問投稿すると、最大4000ポイント当たる!!!! >>

MySQL5.1.14をインストールをしたところ、4.1で動いていたプログラムが軒並みエラーストップ。
どうも、空白を入れるとエラーになるようで、5.1へ移行出来なくて困っています。どなたかご教授をお願いします。

環境は
Windows2000Pro
MySQL 5.1.14-beta

サンプルのテーブルは
drop table if exists addressbook;
CREATE TABLE addressbook(
id smallint(4) UNSIGNED NOT NULL auto_increment,
name1 varchar(20) default NULL,
birthday date default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=sjis;

INSERT INTO addressbook VALUES
('','名前1','2006-12-22'),
('','','');
で次のエラーが出る。
ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1

このQ&Aに関連する最新のQ&A

A 回答 (3件)

なるほど、そういう質問でしたか。

失礼しました。

調べてみましたけど、ちょっとムリそうでしたねぇ。

エラーの内容からすると、integerに空行はinsertできない旨ですよね。
となると、数値フィールドに''をinsertしたら、NULLと見なすパラメータ等のオプションを探すしかないわけです。
ネットで調べる程度では、わかりませんでした。
    • good
    • 1
この回答へのお礼

そうなんです。
「数値フィールドに''をinsertしたら、NULLと見なすパラメータ等のオプション」が欲しかったのです。
いろいろ調べていただきありがとうございました。
数値フィールドに''を入れないように作り変える方向で検討します。

お礼日時:2006/12/27 21:03

'' これがマズイのではないですかねぇ。


NULLでOKだと思います。

この回答への補足

説明不足ですみません。
NULL、0、スペースなどは通るのです。
5.1から空白が入らないため、4.1で動いていたWebアプリが動かなくて困っています。
5.1から仕様が変わったとするとWebアプリを作り変え無ければなりません、何とか作り変えないで済ませるためにはと思ったのですが。解決方法は無いですかね。

補足日時:2006/12/27 13:52
    • good
    • 0

NOT NULL制約を外す。

この回答への補足

やってみましたが。同じエラーです。
date,time,数値カラムが空白を受け付けません。
MySQL5から変更になったのでしょうか?

補足日時:2006/12/26 10:53
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDBエラーの意味

フォームからDBにデータ挿入しようとすると

Column count doesn't match value count at row 1

というエラーが出てしまいます・・・どういう意味を持ったエラーなんでしょうか?

Aベストアンサー

カラム数と値の数が合わない、と言う事です。簡単な英語なので覚えましょう。
カラム数が4つにもかかわらず、
"INSERT INTO tablename VALUES (1,'hoge',3)"
とやった場合等に出るエラーだと思います。

QデータベースのINT型項目にNULLはNG?

以前、知り合いからデータベースのINT型の項目には出来ればNULLを許可しない(NOT NULL)方がいいと聞いたことがあるのですが、本当でしょうか?

現在不動産の物件データを登録するためのシステムを作成しており、
データベースの設計を行なっている最中なのですが、
例えば金額や面積など数字しか入力されない項目はINT型にしたいと考えています。
※データベースはMySQLになります。

ただし、
物件データ登録時に数字項目に何も入力されなければ「NULL」、
0以上の数値を入力されている場合にはそのままその数値をデータベースに登録したいと考えています。
※0を入力されている場合には「0」をそのまま入れたいです。

INT型の項目にはNULLを入れるのを避けた方がいい場合には、0を入れるような仕様に変更しようと考えているのですが、その辺のことについて教えて頂けると助かります。

ざっくりとした質問で申し訳ございませんが、宜しくお願い致します。

Aベストアンサー

物件データ登録時に数字項目に何も入力されなければ「NULL」、0を入力されている場合には「0」
本来の意図としては正しいはずです。
Nullは本来、どの値を入れればいいのかわからない値ということなので、
数字がわからない=何も入力していない ということで、Nullを指定するのは正しいはずです。
しかし、
実際に使うときには、Nullは実に不自由なので、
Nullは使うなという話がでてきます。
## 私なら、入力区分 0=未入力、1=入力 と 数値(未入力は0)と別々に持つかもしれません。

というのは例えば、
金額 100万以上の物件は何件?
というSQLに対して、100件と答えがでて、
金額 100万未満の物件は何件?
というSQLに対して、50件と答えがでたとします。
じゃあ、全物件は?・・・172件だったりします。
何故?⇒Nullが22件だったためです。
(Nullは0とは違い、どちらの検索条件にも含まれません。)
・・・この不自由さを回避するために数値項目に、Not Null制約をつけることが多いです。

QERROR1062:Duplicate entry.....というエラーが出てしまいました

いつもお世話になります。
データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、
ERROR1062:Duplicate entry.....というエラーが出てしまいました。
お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。
【実行したSQL】
INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52

tblAの主キー:dataA1とdataA2
tblBの主キー:dataB1

dataA1とdataA2はtblAの主キーとなっているため、重複してしまうということのようです。tblBの主キーはdataB1であるため、抽出されてくるデータは常に1件なので問題ないと期待していましたが、甘くなかったようです。何か良い方法はないものでしょうか?よろしくお願いいたします。

Aベストアンサー

「ERROR 1062」は、重複データを格納しようとした場合に出力されるエラーです。
既にdataA1='9001'&dataA2='AA'という行が、tblAに格納されているのですよね?

>抽出されてくるデータは常に1件なので問題ないと期待していました

「insert ~ select ~」を実行前に、既に同じデータが格納されているのでは?
あるいはprimary keyの指定が、質問中に記された通りでなく、2件以上検索されているかです。

>何か良い方法はないものでしょうか?

何をするための方法を、聞きたいのかが分かりませんが?

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

QMySQLでデータベースにデータinsert時のエラー。

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column '******' at row 1
とエラーがでて解決できません。どこがおかしいのでしょうか?(JAVA初心者ですいません。)

Aベストアンサー

私の場合ですが、データベース接続直後に
"SET NAMES SJIS;"
を実行すれば正常にINSERT出来ました。

なお、テーブルの作成時に文字コードをSJISにしておく必要があります。私は(cp932 -- SJIS for Windows Japanese)にしました。
後からテーブルの文字コードを修正してもうまくいきませんでした。

QCSVからNULL値をインポート

phpMyAdminを使用してcsvからデータをインポートしようとしています。
通常の値は問題なくインポートできるのですが、NULL値があるフィールドがどうしても「0」になってしまいます。(そのフィールドはNULL値が入力可で、デフォルト値もNULLです)

csvからNULL値をインポートする方法をご教授下さい。

宜しくお願いします。

※\Nを入力するとNULLになるという情報があったため、
"1";"2";"3";"4";\N
"1";"2";"3";"4";"\N"
(1.2.3.4は適当な文字で、5番目をNULLにしたい)
の両方を試みましたが、入力結果は「0」でした。

phpMyAdmin - 2.10.2
MySQL クライアントのバージョン: 5.0.18
フィールド区切り記号 ;
フィールド囲み記号 ""

Aベストアンサー

"1";"2";"3";"4";NULL

でいけませんか?

QERROR 1054 (42S22) 原因不明です

idはintでプライマリー
a5はchar(10)で日本語文字列を格納

データを取得しようとすると#1054エラーがでます。

admin--------
SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`
#1054 - Unknown column 'ã

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`;
ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause'


`あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。
admin--------
SELECT * FROM `aaa` WHERE `a5`=`abcde`
#1054 - Unknown column 'abcde' in 'where clause'

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`abcde`;
ERROR 1054 (42S22): Unknown column 'abcde' in 'where clause'


admin--------
moniter--------
SELECT * FROM `aaa` WHERE `a5`
SELECT `a5` FROM `aaa` WHERE 1
SELECT * FROM `aaa` WHERE `id`=89584
成功

idはintでプライマリー
a5はchar(10)で日本語文字列を格納

データを取得しようとすると#1054エラーがでます。

admin--------
SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`
#1054 - Unknown column 'ã

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`;
ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause'


`あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。
admin--------
SELECT * FROM `aaa` WHERE `a5`=`abcde`
#1054...続きを読む

Aベストアンサー

> SELECT * FROM `aaa` WHERE `a5`=`abcde`

こうしてみるとか:

SELECT * FROM aaa WHERE a5='abcde'

参考:
http://dev.mysql.com/doc/refman/5.1/ja/identifiers.html
http://dev.mysql.com/doc/refman/5.1/ja/string-syntax.html

Qint型フィールドにnullを登録できない・・・

> insert into tbl_tst values (001,'',21000,,22,4400,'3~4日','∞')
とすると syntax error になってしまいます。

> insert into tbl_tst values (001,'',21000,'',22,4400,'3~4日','∞')
とすると out of range になってしまいます。

> insert into tbl_tst values (001,'',21000,0,22,4400,'3~4日','∞')
は通常に登録できます。

> insert into tbl_tst values (001,'',21000,'0',22,4400,'3~4日','∞')
も通常に登録できます。

4カラム目のフィールドなのですが、show fields で見ても
int(11) Null→YES  Default→NULLとなっております。
NULLを登録(何も値を入れない)したいのですが、
どうすればよいでしょうか。
ご存知の方いらっしゃいましたらご教示願います。
宜しくお願い致します。

> insert into tbl_tst values (001,'',21000,,22,4400,'3~4日','∞')
とすると syntax error になってしまいます。

> insert into tbl_tst values (001,'',21000,'',22,4400,'3~4日','∞')
とすると out of range になってしまいます。

> insert into tbl_tst values (001,'',21000,0,22,4400,'3~4日','∞')
は通常に登録できます。

> insert into tbl_tst values (001,'',21000,'0',22,4400,'3~4日','∞')
も通常に登録できます。

4カラム目のフィールドなのですが、show fields で見ても
int(...続きを読む

Aベストアンサー

insert into tbl_tst values (001,'',21000, NULL ,22,4400,'3~4日','∞')
です

Q#1062 - Duplicate entry '1' for key 'PRIMARY'

利用していた幾つかのテーブルの中身だけを消去してしまいました。

ダンプデータを取ってあったので、復元させようとしたら、
下記エラーとなりました。何回か試している内、最終的にはうまくいったのですが、下記エラーは、どういう意味だったのでしょうか。
#1062 - Duplicate entry '1' for key 'PRIMARY'

<補足>
・テーブル自体は消失していなかったので、データが消失したテーブル部分のみ、phpMyAdminのSQL欄にSQL文を書いて、テーブルごとにINSERT 文を実行した。

<知りたいこと>
・エラーの意味

Aベストアンサー

プライマリーキーに対して"1"というデータがすでに存在していて
競合してますってことですね

プライマリーキーはユニークを確保するための検索キーなので
同一値はもてません

Qテーブル作成でエラーが出てきます。

こんにちは。
いつもお世話になっております。

テーブルを作っていたのですが、
ERROR 1060: Duplicate column name
というエラーが帰ってきてしまいます。

予約語とかぶっているフィールド名でもないし、
何が悪いのかわからなくって・・・。

どうかご指導よろしくお願いいたします。

Aベストアンサー

実際にエラーが出た create 構文を示していただければ指摘できると思います。


人気Q&Aランキング