- ベストアンサー
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などで調べてみても思うようなエラーの原因が理解できません。 どなたか教えていただけないでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
1),2)はユニークキーが重複しています。 3)は文法エラーです。列の前後にある()が原因でしょう。 keyがプライマリキー=ユニークキーですので、この値は全てのレコードで別の値がつかないといけません。
その他の回答 (1)
- chachi25
- ベストアンサー率30% (102/333)
私もそんなに知り尽くしているわけではないのですが、 (1)については、 kadai_tableというテーブルのデータを使って kadai_tableを作ろうとしているからエラーになるのかなと。 始めのkadai_tableを別の名前しないといけないのでは?? 2と3についても、 なにかと同じ名前のテーブルを作ろうとしているのが 一つの原因になるのではないでしょうか。 Duplicate という言葉の意味は 「複製・まったくおなじもの」とかです。 同じ表名にしようとするのでそういうエラーがでるのかな?
お礼
chachi25様 アドバイスありがとうございました。 ちがう名前のテーブルを作成した後に値を挿入することで 解決することにしました。 本当にお手数をおかけいたしました。 今後ともよろしくお願いいたします。
お礼
crum様 ご回答どうもありがとうございました。 違うテーブルを作成しコピーする方法で解決しようと思います。 一つ一つお答えいただき助かりました。 お手数をおかけして申し訳ありませんでしあ。 今後ともよろしくお願いいたします。
補足
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が振ってくれる値 としたい場合はどうしたらいいのでしょうか? 一行一行指定するしかないのでしょうか? また、参考になるような情報が載っているサイトをご存知であれば教えてください。 お手数をおかけいたしますが、よろしくお願いいたします。