🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PyCharm

エディター・開発ツール

Q&A

1回答

1338閲覧

create viewで作ったviewを閲覧しようとするとCan't writeエラーが発生する

MagMag

総合スコア80

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PyCharm

エディター・開発ツール

0グッド

0クリップ

投稿2021/02/01 23:11

PyCharmのデータベース接続機能を利用し、mySQLデータベースにselect *でviewにアクセスしてデータ抽出しようとしています。

create viewのクエリーではエラーが発生しないのものの、作成したviewを閲覧しようとすると、'Can't write; duplicate key in table'というエラーが出ます(なお、エラー名で検索するとforeign keyを設定したテーブル参照の違反時に発生するようですが、今回データベースにはforeign keyは設定していません)。

また、create view view_name asを除いて、単純にselect以降の範囲を実行すると、問題なく表示されます。

特徴として集計行が200行くらいあるのですが、行を半分くらいにすると問題なく実行できます。また、各行には重複は発生していません。この場合、どのように対処したらいいでしょうか?

mySQL

1create view view_name as 2select 番号, 3 sum(分子量 * 添加割合) / sum(添加割合), 4 sum(有機 * 添加割合) / sum(添加割合), 5 sum(無機 * 添加割合) / sum(添加割合), 6 ...(最大200行) 7from database as pr 8 left join database2 as mt using (名称) 9group by 番号; 10 11select * from view_name; 12--[23000][1022] Can't write; duplicate key in table '/var/tmp/#sql2a56_23_8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

viewのカラムにユニークな名前をつけてください

投稿2021/02/14 16:15

yambejp

総合スコア116694

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MagMag

2021/02/16 23:12 編集

ありがとうございます。viewのカラムというのは、sum(...)の200行のところでしょうか? がんばって200個についてasを追加したのですが、同じエラーが発生しました。
yambejp

2021/02/17 00:14

もっとすくないカラム数でviewを作るテストをしてください 徐々に増やしていきエラーが出た箇所がネックになっている部分です
MagMag

2021/02/20 09:02 編集

質問項目にも記載していますが、データセットを半分くらいにするとエラーが出ず、100個超えるとエラーが出てくる感じです(正確に何個以上という域値までは確認していませんが)。対処療法的にはviewを2つ作って対応しているのですが、根本原因を追求方法はありますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問