varchar(2000) mysql テーブルなどのビッグ データ型に外部キーを追加する
P粉378264633
P粉378264633 2023-09-05 17:33:34
0
2
524
<p>「affiliate_stats」と「transaction」という 2 つのテーブルがあります。 「affiliate_stats」には列「affiliate_sales」varchar(2000) (サブテーブル) があります。 「transaction」には列「_id」があり、varchar(100) 主キー (親テーブル) </p> <p>「_id」を参照する外部キーを「affiliate_sales」に追加した場合 通り抜ける <code>テーブル変更</code>affiliate_stats<code>制約の追加</code>fk_affili_sales<code>外部キー (affiliate_sales) 参照トランザクション (</code>_id<code>);</code> < /p> <p>このエラーを表示<code>指定されたキーが長すぎます。最大キー長は tes</code> で 3072 です。 両方の列のサイズが等しい必要があることはわかっていますが、私の場合、これを処理するには異なるサイズが必要です。 多くの情報源を検索しましたが、明確な答えはなく、どの解決策も私にとっては役に立ちませんでした。 </p>
P粉378264633
P粉378264633

全員に返信(2)
P粉321676640

affiliate_salesVARCHAR(100) に変更します。

リーリー

これが transaction(_id) の外部キーである場合、100 文字を超える文字列を保持できないため、VARCHAR(2000) である必要はありません。ともかく。

この操作を実行する前に、現在列に 100 文字を超える文字列がないことを確認してください。


コメントへの返信:

「配列」(つまり、カンマ区切りのリストを含む文字列) を列に格納する予定がある場合は、いずれにしても外部キーを作成できないことを理解しておく必要があります。外部キーには、 値と transaction テーブル内の行を関連付ける列が必要です。外部キー制約を追加すると、列に格納できる ID は 1 つだけになります。

affiliate_statstransaction の間には確かに多対多の関係があるようです。多対多の関係をモデル化するには 3 番目のテーブルが必要です。

いいねを押す +0
P粉147045274

varchar(2000) 2000 文字を格納しますが、各文字は必ずしも 1 バイトであるとは限りません。 a、1、? などの単純なヨーロッパ文字はすべて 1 バイトです。ただし、ü または å または َََُِِّْ は複数バイトを占めます。


文字列型が同じ長さである必要はない可能性があります

ただし、これは必須ではありません。

キーは 100 文字を超えることはできません。主キーは varchar(100) であるため、外部キーは 100 文字を超えることはできません。

ただし、

この列には 2 つの異なるタイプのデータを保存したいようです。 1 つは特定の配列タイプで、もう 1 つは外部キーです。あなたはできません。 外部キー 値に一致する主キー値があることを確認します。


代わりに、

自動インクリメント主キー を使用してテーブルをリンクします。よりシンプルで高速で、使用するストレージが少なく、明確で決して変更されません。

両方のテーブルの主キーとして新しい列を追加します。それからそれを引用します。


複数のキーを 1 つの列に保存することはできません。 MySQL は、各外部キーに一致する主キーがあることを確認できる必要があり、これを行うには、それらが正確に等しいことを確認する必要があります。

代わりに、各affiliate_stats行が複数のaffiliate_salesに対応する場合は、

結合テーブルが必要です。これは 1 対多の関係と呼ばれます。アフィリエイト統計の 1 行は、多くのアフィリエイト_セールスに関連しています。 リーリー

次に、affiliate_stats 行に追加するそれぞれのaffiliate_sale の行を、affiliate_stats_sales に挿入します。

リーリー

売上と統計データは、このテーブルを結合することによって関連付けられます。たとえば、100 個の販売の統計を表示したい場合。

リーリー

最初は少し難しいですが、非常に強力です。これがリレーショナル データベースの仕組みです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!