0

データベースの対話性を必要とする wordpress プラグインを開発しています。activate フックで dbDelta 関数を使用して、複数のテーブルをデータベースに追加しています。dbDelta関数先週は機能していましたが、今日別のテーブルを追加しようとしても何も起こりませんでした。列を追加したり、既存のテーブルの属性を変更したりすることもできませんでした。誰かが dbDelta を実行する前に sql コマンドを分割することを提案しましたが、これもうまくいきません。

質問する前に: はい、コーデックスのページを読み、フォーマットの指示に従いました。

コードは次のとおりです。

<?php
function install ()
{

    global $wpdb; //use the global variable wpdb, a class used to interact with wordpress's database

    //define table names, using the the db's prefix
    $gist_table = $wpdb->prefix . "cookbook_gist";
    $tag_table = $wpdb->prefix . "cookbook_tags";
    $tagKey_table = $wpdb->prefix . "cookbook_tagKeys";
    $comment_table = $wpdb->prefix . "cookbook_comments";
    $blacklist_table = $wpdb->prefix . "cookbook_blacklist";

   //Include the wpdb function

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); //the dbDelta function is in this file

    //create the sql statements to add the tables

    $sql = "CREATE TABLE $gist_table (
    gist_id mediumint NOT NULL,
    last_cached datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
    last_updated datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
    author tinytext NOT NULL,
    description mediumtext NOT NULL,
    header mediumtext NOT NULL,
    body text NOT NULL,
    footer mediumtext NOT NULL,
    PRIMARY KEY  (gist_id)
    );";

    //Actually add the table
    dbDelta($sql);

    $sql = "CREATE TABLE $tag_table (
    tag_id mediumint NOT NULL AUTO_INCREMENT,
    tag tinytext NOT NULL,
    PRIMARY KEY  (tag_id)
    );";

    dbDelta($sql);

    $sql ="CREATE TABLE $tagKey_table (
    id mediumint NOT NULL AUTO_INCREMENT,
    gist_id mediumint NOT NULL,
    tag_id mediumint NOT NULL,
    PRIMARY KEY  (id)
    );";

    dbDelta($sql);

    $sql = "CREATE TABLE $comment_table (
    id mediumint NOT NULL,
    gist_id mediumint NOT NULL,
    author tinytext NOT NULL,
    date_created datetime NOT NULL,
    comment mediumtext NOT NULL,
    newcol text NOT NULL,
    PRIMARY KEY  (id)
    );";

    dbDelta($sql);


    $sql = "CREATE TABLE $blacklist_table (
    gist_id mediumint NOT NULL,
    PRIMARY KEY  (gist_id)
    );";


    dbDelta($sql); //makes the changes to the wp database    
}

?>
4

1 に答える 1

0

混乱させて申し訳ありません。数日前、私のホスティング サービスは、私たちがホストされているサーバーを変更しました。私はまだ古いサーバーにログオンしてデータベースを管理していました。正しいサーバーにログオンすると、期待どおりに変更が行われました。

于 2012-07-10T12:59:30.010 に答える