みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLのエラーの意味

お世話になります。

| Field | Type | Key |
------------------------------
| ID | int(11) | PRI |
| NAME | varchar(50) | |
| BIKO | varchar(100) | |


とテーブルを作成し、
データの中身を
| ID | NAME | BIKO |
+----+--------+------+
| 1 | あああ | なし |
| 2 | いいい | |
| 3 | ううう | なし |


と作成しました。
このテーブルを元に同じデーブルに新しいテーブルを作成しようと思っているのですが、

1)INSERT INTO kadai_table (ID,NAME) SELECT ID , NAME FROM kadai
_table;
とすると
Duplicate entry '1' for key 1
というエラーがかえってきます。
2)INSERT INTO kadai_table (ID,NAME,BIKO) SELECT ID , NAME , BIKO FROM kadai
_table;
とすると
Duplicate entry '0' for key 1
というエラーで
テーブルが

| ID | NAME | BIKO |
+----+--------+------+
| 1 | あああ | なし |
| 2 | いいい | |
| 3 | ううう | なし |
| 0 | あああ | なし |
となってしまいます。

3)INSERT INTO kadai_table (ID,NAME) SELECT (ID,NAME) FROM kadai_table;
とすると
ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp
onds to your MySQL server version for the right syntax to use near 'NAME) FROM k
adai_table' at line 1
とかえってきます。

3)のエラーの原因は構文の記述ミス・・・?と考えているのですがはっきりとしていません。

初歩的な問題なのでしょうが、googleなどで調べてみても思うようなエラーの原因が理解できません。

どなたか教えていただけないでしょうか。
よろしくお願いいたします。

投稿日時 - 2005-09-12 14:34:39

QNo.1644248

困ってます

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

1),2)はユニークキーが重複しています。
3)は文法エラーです。列の前後にある()が原因でしょう。

keyがプライマリキー=ユニークキーですので、この値は全てのレコードで別の値がつかないといけません。

投稿日時 - 2005-09-12 14:48:19

補足

crum様 ご回答ありがとうございます。

mysql> INSERT INTO kadai_table (NAME,BIKO) SELECT NAME,BIKO FROM kadai_table;
とし、
ERROR 1062: Duplicate entry '0' for key 1
とかえってきて
+----+--------+--------------+
| ID | NAME | BIKO |
+----+--------+--------------+
| 1 | あああ | なし |
| 2 | いいい | |
| 3 | ううう | なし |
| 0 | あああ | なし |
+----+--------+--------------+
なりますが、
+----+--------+--------------+
| ID | NAME | BIKO |
+----+--------+--------------+
| 1 | あああ | なし |
| 2 | いいい | |
| 3 | ううう | なし |
| * | あああ | なし |
| * | いいい | |
| * | ううう | なし |
+----+--------+--------------+
*DBが振ってくれる値

としたい場合はどうしたらいいのでしょうか?
一行一行指定するしかないのでしょうか?

また、参考になるような情報が載っているサイトをご存知であれば教えてください。

お手数をおかけいたしますが、よろしくお願いいたします。

投稿日時 - 2005-09-12 14:55:48

お礼

crum様 ご回答どうもありがとうございました。

違うテーブルを作成しコピーする方法で解決しようと思います。

一つ一つお答えいただき助かりました。
お手数をおかけして申し訳ありませんでしあ。
今後ともよろしくお願いいたします。

投稿日時 - 2005-09-12 15:36:09

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

私もそんなに知り尽くしているわけではないのですが、

(1)については、
kadai_tableというテーブルのデータを使って
kadai_tableを作ろうとしているからエラーになるのかなと。
始めのkadai_tableを別の名前しないといけないのでは??


2と3についても、
なにかと同じ名前のテーブルを作ろうとしているのが
一つの原因になるのではないでしょうか。

Duplicate という言葉の意味は
「複製・まったくおなじもの」とかです。
同じ表名にしようとするのでそういうエラーがでるのかな?

投稿日時 - 2005-09-12 14:54:18

お礼

chachi25様 アドバイスありがとうございました。

ちがう名前のテーブルを作成した後に値を挿入することで
解決することにしました。

本当にお手数をおかけいたしました。
今後ともよろしくお願いいたします。

投稿日時 - 2005-09-12 15:33:39

あなたにオススメの質問