DBが変更されたため、テーブルを1列追加するためにテーブルを変更する必要がありますが、関数が実行されていてもテーブルは変更されません。これが私が書いたALTER TABLEコードです。
$sql = "ALTER TABLE " . $packagetable . " ADD COLUMN price decimal(14,2) NOT NULL AFTER description;";
dbDelta($sql);
私はどこでもオンラインでdbDeltaとALTER TABLEの構文を見つけることができませんでした。編集:重力フォームプラグインでALTER TABLEステートメントを見た後、私は一行でステートメントを更新しました。
dbDelta
関数の使い方が間違っています。
その機能の要点は、テーブル作成SQLコマンドを渡すことです。
テーブルが存在しない場合は作成します。
テーブルは存在するが一致しない場合 、一致するまで修正されます。これには、列、インデックス、その他の側面の追加と更新が含まれます。
ですから、あなたがしたいことはdbDeltaを実行して、それをあなたのtable creation sqlではなくtable modification sqlで提供することです。
dbDelta
を使用してテーブルにアップグレード/変更を追加する上でのCodexの見方については、こちらを参照してください
しかし、それはさらに進んでいます! dbDeltaはうるさい関数です。そこにSQLステートメントを入れることはできません。適切にフォーマットする必要があります。
これは、コーデックスが同じページに書いていることです。
- SQLステートメントでは、各フィールドをそれぞれ独自の行に入れる必要があります。
- PRIMARY KEYと主キーの定義の間には2つのスペースが必要です。
- 同義語のINDEXではなく、キーワードKEYを使用し、少なくとも1つのKEYを含める必要があります。
- フィールド名をアポストロフィやバッククォートで囲まないでください。
そして別のものから:
dbDelta関数
私の記事の1つで前述したように、dbDelta関数には現在のテーブル構造を調べ、それを目的のテーブル構造と比較し、必要に応じてテーブルを追加または変更する機能があります。プラグインしかし、多くのWordPress関数とは異なり、dbDelta関数は最もうるさいと面倒なものです。 dbDelta関数が機能するためには、いくつかの基準が満たされる必要があります。
- SQLステートメントでは、各フィールドをそれぞれ独自の行に配置する必要があります。
- PRIMARY KEYと主キーの定義の間には2つのスペースが必要です。
- 同義語のINDEXではなく、キーワードKEYを使用し、少なくとも1つのKEYを含める必要があります。
まあ、上記の基準は簡単に達成できます。しかしそれがあなたにぶつかるまで待ってください。