メニュー

Home >freoTIPS>プラグイン系TIPS> ニュースプラグインをバージョン2_0_0にアップデートする方法

【freoTIPS】【プラグイン系TIPS】ニュースプラグインをバージョン2_0_0にアップデートする方法

2014/01/04 14:16|タグ:ニュースプラグインエクスポートプラグインインポートプラグイングッジョブ表示 52

拙サイトで配布しているニュースプラグインはバージョン2_0_0になるにあたり、データベースのフィールドが増えました。
バージョン2_0_0より前のバージョンをご利用の方は、データベースを書き換える作業が必要です。

ニュースプラグインをアップデートする方法

まずは、通常通りプラグインをアップデートします。

  1. ニュースプラグインの最新版をダウンロードする。
  2. ダウンロードしたファイルを解凍する。
  3. freoフォルダをfreo設置フォルダにアップロードする。
  4. [freo/index.php/news/setup]にアクセスしてセットアップする。

ここまでは通常のアップデートと変わりません。
ニュースプラグインの旧バージョンをご利用の方は、以下に説明するデータベースの書き換えが必要です。

ニュースプラグインのデータベースを書き換える(SQLiteを利用している場合)

  1. エクスポートプラグインを使って、「freo_plugin_newses」テーブルの情報をDLします。
    freo管理画面→プラグイン→エクスポートプラグインを選択し、「freo_plugin_newses」テーブルの内容をダウンロードして下さい。
    news_versionup_00.jpg
  2. ダウンロードしたSQLファイルをエディタで開きます。
    画像はサクラエディタで開いた時の様子です。
    news_versionup_01.jpg
  3. データベースの情報を書き換えます。
    まずは、テーブルの情報を書き換えます。
    6行目
    CREATE TABLE freo_plugin_newses(id INTEGER, created DATETIME NOT NULL, modified DATETIME NOT NULL, datetime DATETIME NOT NULL, title VARCHAR NOT NULL, url TEXT, tag VARCHAR, text TEXT, PRIMARY KEY(id));
    の部分を
    CREATE TABLE freo_plugin_newses(id INTEGER, created DATETIME NOT NULL, modified DATETIME NOT NULL, datetime DATETIME NOT NULL, title VARCHAR NOT NULL, url TEXT, tag VARCHAR, text TEXT, category_id VARCHAR, option01 TEXT, option02 TEXT, option03 TEXT, option04 TEXT, option05 TEXT, option06 TEXT, option07 TEXT, option08 TEXT, option09 TEXT, option10 TEXT, PRIMARY KEY(id));
    
    のように書き換えて下さい。
  4. 次に、既に登録されている情報に、増えた分のフィールドの内容を仮に入れていきます。
    上の画像で言うと、8~10行目が既に入っている情報です。
    行末に、増えたフィールド分(カテゴリーIDとオプション10個分のフィールド)を追加します。
    8~10行目を別の画面にコピペして、
    );


    ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
    
    置換します。
    置換した8~10行目を元のデータベースにコピペすればOKです。
  5. 書き換えたデータベースを上書き保存します。
  6. freo管理画面→プラグイン→インポートプラグインを選択し、インポートします。
    link_versionup_02.jpg

ニュースプラグインのデータベースを書き換える(MySQLを利用している場合)

  1. エクスポートプラグインを使って、「freo_plugin_newses」テーブルの情報をDLします。
    freo管理画面→プラグイン→エクスポートプラグインを選択し、「freo_plugin_newses」テーブルの内容をダウンロードして下さい。
    news_versionup_00.jpg
  2. ダウンロードしたSQLファイルをエディタで開きます。
    画像はサクラエディタで開いた時の様子です。
    news_versionup_01_mysql.jpg
  3. データベースの情報を書き換えます。
    まずは、テーブルの情報を書き換えます。
    6~16行目
    CREATE TABLE `freo_plugin_newses` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `datetime` datetime NOT NULL,
      `title` varchar(255) NOT NULL,
      `url` text,
      `tag` varchar(255) DEFAULT NULL,
      `text` text,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
    の部分を
    CREATE TABLE `freo_plugin_newses` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `datetime` datetime NOT NULL,
      `title` varchar(255) NOT NULL,
      `url` text,
      `tag` varchar(255) DEFAULT NULL,
      `text` text,
      `category_id` varchar(255) DEFAULT NULL,
      `option01` text,
      `option02` text,
      `option03` text,
      `option04` text,
      `option05` text,
      `option06` text,
      `option07` text,
      `option08` text,
      `option09` text,
      `option10` text,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    のように書き換えて下さい。
  4. 次に、既に登録されている情報に、増えた分のフィールドの内容を仮に入れていきます。
    上の画像で言うと、18行目が既に入っている情報です。
    行末に、増えたフィールド分(カテゴリーIDとオプション10個分のフィールド)を追加します。
    18行目を別の画面にコピペして、
    );


    ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
    
    置換します。
    置換した18行目を元のデータベースにコピペすればOKです。
  5. 書き換えたデータベースを上書き保存します。
  6. freo管理画面→プラグイン→インポートプラグインを選択し、インポートします。
    link_versionup_02.jpg

ニュースプラグインのデータベースを書き換える(phpMyAdminを利用している場合)

 

  1. phpMyAdminにログインして「データベース」メニューをクリックしてデータベースの一覧を表示する
    phpmyadmin01.jpg
  2. freoを設置しているデータベースを選択する
    (この例では「newsupdate」というデータベースにfreoを設置しています)
    phpmyadmin02.jpg
  3. テーブルのリストが表示されるので、「freo_plugin_newses」テーブルの「構造」をクリックする
    phpmyadmin04.jpg
  4. 現在のフィールドが一覧表示されるので、11個のフィールドをテーブルの末尾に追加するを実行する。
    phpmyadmin05.jpg
  5. フィールド追加画面が表示されるので、この記事のニュースプラグインのデータベースを書き換える(MySQLを利用している場合)(3)を参考にフィールドの情報を登録していく。
    名前、データ型、長さ、デフォルト値を入力して、右側に画面を動かすとNULLを入れる箇所もあるので、必ずNULLに設定しておくこと。
    phpmyadmin07.jpgphpmyadmin08.jpg
  6. 全て入力し終わったら、保存するをクリックする
    phpmyadmin09.jpg
  7. これでテーブルのフィールド数がこれまで登録されていたニュース分も含めて増えているはずです。

ページ移動

関連エントリー

コメント

mime

すみません、不勉強でわからないところがあるのですがお教え頂けないでしょうか。
MySQLでバージョンアップしようとしています。
「);」を置換するとのことですが、その「);」が見当たらないのですが…
データベースのことは全くわからない上に、デフォルトのエクスポートプラグインが使えないためphpMyAdminを使用しているのですが、それもいけないのでしょうか?

  • 2014/04/01 20:11:25

mime

連投すみません。
「8~10行目」というのもよく理解できないのですが、もしかしてSQLiteの説明のままなのではないでしょうか?失礼を申し上げてすみません。

  • 2014/04/01 20:17:47

ミツ@32877

こんにちは
ご指摘の通りMYSqlでのバージョンアップ時の行数が間違ってました。
正確には8~10行目ではなく18行目でした。
具体的には、5~16行目がテーブルの設定で、18行目が登録されているデータ部分ですね。
サンプルは一件しかニュースが登録されていない状態です。
何件もニュースがある場合は、登録されている件数分のデータの置換が必要です。

  • 2014/04/01 21:19:28

さわ

ミツ様、初めまして。こちらの解説はとてもわかりやすく、いつも参考にさせて頂いております。ニュースプラグインも愛用しております。ありがとうございます。
旧バージョンからのアップデートについて、お尋ねしてもよろしいでしょうか。

「ニュースプラグインをアップデートする方法」の手順3まで終えた後、4のセットアップをしようとすると
------
Table 'データベース名.freo_plugin_news_categories' doesn't exist
------
というエラーが出てセットアップページにアクセスできなくなってしまいます。
libsフォルダをアップロードするとこうなるようなのですが、これは何が原因かお分かりになりますでしょうか。

自力で解決できれば良いところをお手を煩わせるようで恐縮ですが、ご教示頂ければ幸いです。何か情報不足でしたら申し訳ありません。
よろしくお願いいたします。

  • 2014/04/01 23:45:10

mime

お早いお返事ありがとうございました。しかし、結果としてデータベースの書き換えが出来ないため、アップデートできませんでした。
エクスポートプラグインが文字化けするため、phpMyAdminでデータベースの書き換えを行おうとしたのですが、
エクスポートプラグインで出力した場合とは色々と異なるため、上手くいきません。

・「);」が最後につくのは直近の一件だけで、他は「),」で終わっている
・INSERT文は各ニュースでなく、最初に
「INSERT INTO `freo_plugin_newses` (`id`, `created`, `modified`, `datetime`, `title`, `url`, `tag`, `text`) VALUES」で示される
・各ニュースの行末に増えたフィールド分を追加してインポートしようとするとエラーになる

freo本体のアップデートにかかわりなく使用できるなら、旧バージョンのままでプラグインを使わせていただきます。無知のためこれ以上はどうにもなりません、お手数おかけしました。

  • 2014/04/01 23:56:42

mime

自分の借りているサーバのphpMyAdminだとこうなっています。

CREATE TABLE IF NOT EXISTS `freo_plugin_newses` (
`id` int(10) unsigned NOT NULL auto_increment,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`datetime` datetime NOT NULL,
`title` varchar(255) NOT NULL,
`url` text,
`tag` varchar(255) default NULL,
`text` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=65 ;

INSERT INTO `freo_plugin_newses` (`id`, `created`, `modified`, `datetime`, `title`, `url`, `tag`, `text`) VALUES
(1, '2000-01-01 00:00:00', '2000-01-01 00:00:00', '2000-01-01 00:00:00', 'テスト', '', NULL, NULL),
(2, '2001-10-10 00:00:00', '2001-10-10 00:00:00', '2001-10-10 00:00:00', '更新', '', NULL, NULL);

自分なりに工夫してみたのですが、結局「Column count doesn't match value count at row 1」で終わってしまいました。新しいカラムは自力で追加しなければならないのでしょうか?

  • 2014/04/02 01:06:42

ミツ@32877

さわさん→
こんにちは。
状況を再現するのでデータベースの種類を教えてください。
そのエラーは[freo/index.php/setup]にアクセスすると表示されそうなエラーですが、[freo/index.php/news/setup]にアクセスした時表示されるんですね?
アクセスするURLを念のため確認してください。

Table 'データベース名.freo_plugin_news_categories' doesn't exist

というエラーは、「'データベース名.freo_plugin_news_categories'なんてないですよ」というエラーです。
'データベース名.freo_plugin_news_categories'は、ニュースプラグイン2.0.0以上に追加した、ニュースプラグインのカテゴリー用テーブルです。
このテーブルをセットアップするには、[freo/index.php/news/setup]にアクセスしてニュースプラグインをセットアップしなければなりません。
このセットアップをしないで他画面にアクセスすると、

Table 'データベース名.freo_plugin_news_categories' doesn't exist

というエラーが表示されると思います。
なので、アクセスするURLをもう一度確かめて、[freo/index.php/news/setup]にアクセスしたにもかかわらず同じエラーが表示されるなら、問題を検証して解決してみるので教えて下さい。

mimeさん→
こんにちは。
PhpmyNULLを使ったエクスポート・インポートはこちらで検証しにくいのですが、教えていただいたデータベースを拝見するに、

(3)にあるように、データベースのテーブル情報部分、つまり

CREATE TABLE IF NOT EXISTS `freo_plugin_newses` (
`id` int(10) unsigned NOT NULL auto_increment,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`datetime` datetime NOT NULL,
`title` varchar(255) NOT NULL,
`url` text,
`tag` varchar(255) default NULL,
`text` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=65 ;

CREATE TABLE IF NOT EXISTS `freo_plugin_newses` (
`id` int(10) unsigned NOT NULL auto_increment,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`datetime` datetime NOT NULL,
`title` varchar(255) NOT NULL,
`url` text,
`tag` varchar(255) default NULL,
`text` text,
`category_id` varchar(255) DEFAULT NULL,
`option01` text,
`option02` text,
`option03` text,
`option04` text,
`option05` text,
`option06` text,
`option07` text,
`option08` text,
`option09` text,
`option10` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=65 ;

と書き換えていただき、

INSERT INTO `freo_plugin_newses` (`id`, `created`, `modified`, `datetime`, `title`, `url`, `tag`, `text`) VALUES

部分を

INSERT INTO `freo_plugin_newses` (`id`, `created`, `modified`, `datetime`, `title`, `url`, `tag`, `text` , `category_id` , `option01` , `option02` , `option03` , `option04` , `option05` , `option06` , `option07` , `option08` , `option09` , `option10`) VALUES

に変更して頂き、
記事で紹介しているデータベースの書き換えの(4)にある置換を、

「);」

「,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);」

と置換するのに加え、

「),」

「,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),」

と置換すれば良いように思います。
あと、

Column count doesn't match value count at row 1

というエラーは、「テーブルのフィールド数とデータベースのデータ数が等しくないよ」というエラーです。

・そもそもプラグインをバージョン2以上にアップデートしてるか(フィールド数が増えたニュースプラグインのphpファイルを利用しているか)
・データベースのテーブル設定はきちんと修正されたか(CREATE TABLE行にカテゴリーIDとオプション10個分のフィールドが増えているか)
・各ニュースに増えた項目分のフィールドがNULLとして挿入されているか(INSERT部分の各ニュースに追加してやらなければなりません)
確認してください。

尚、ニュースプラグインを旧バージョンのまま利用しても、freo本体には影響はありません。
どうしてもバージョンアップができなくてどうしてもバージョンアップがしたいならデータベースを送っていただければこちらで内容を確認し、phpmyNULLを利用してアップデートができるか確認した上で、修正したデータベースをお返しします。(少しお時間頂戴するかもしれませんが。)

  • 2014/04/02 10:16:37

さわ

こんばんは。お早いお返事ありがとうございます。
ご指摘の通り、URLのミスがあったようです。確認不足でお時間を頂いてしまい大変失礼しました。
ですが、おかげさまで正しくアップデートすることができました。丁寧なご対応に感謝いたします。
今後もニュースプラグインにお世話になろうと思います。

  • 2014/04/02 20:28:28

ミツ@32877

さわさん→
お役に立てたようでよかったです。
今後もどうぞ宜しくお願いします♪

  • 2014/04/02 21:47:10

mime

丁寧にありがとうございました。結果としてはダメでした。プラグインのアップデートからやり直し、セットアップもして、お教え頂いた通りに(実は昨日自分でもこの通りにしていたのですが)データベースを書き換えてみましたが、インポートの段階で
「Unknown column 'category_id' in 'field list'」
というエラーで進めませんでした。(自分でも同じ現象でした)
・データベースのテーブル設定はきちんと修正されたか
という件ですが、こちらで書き換えたかどうかということでしょうか、それとも既に作成されているfreo_plugin_newsesのフィールドが増えたかということでしょうか?
phpMyAdminで見る限り、テーブル構造がバージョンアップ以前と変わっておらず、フィールドが全く追加されていないのですが、これは異常な状態でしょうか?freo_plugin_news_categoriesは作成されています。管理画面、サイト表示画面ではアップデートできているように見えます。
データベースの開示は共同管理者の許可が得られなかったため、残念ですがお送りできません。本体付属プラグインが使用できない場合は、アップデート不能ということになるのでしょうか。エクスポートプラグインが文字化けする現象は、freoのサポート掲示板でも相談されていた方がいたので、意外と存在しているような気がするのですが。

  • 2014/04/02 23:27:33

ミツ@32877

mimeさん→
>・データベースのテーブル設定はきちんと修正されたか
という件ですが、こちらで書き換えたかどうかということでしょうか、それとも既に作成されているfreo_plugin_newsesのフィールドが増えたかということでしょうか?

freo_plugin_newsesテーブルに、「category_id」及び「option01~10」というフィールドを増やすために、CREATE TABLE行の書き換えをして頂いています。
でも、freo_plugin_newsesのフィールドが増えていないということは、CREATE TABLE構文ではダメなのかもしれないですね。

そういえばデータベースにはUPDATEという命令もあったはずなので、ちょっとphpMyAdminでアップデートする方法がなにかないかどうか調べてみます。
エクスポート・インポートプラグインが使えなければアップデート不能かといわれれば、きっと不能ではないと思います。
私が検証してなかったというだけで…。
少しお時間頂けると嬉しいです。

  • 2014/04/02 23:59:06

ミツ@32877

mimeさん>
phpMyAdminでデータベースのフィールドを増やす方法がわかったので本記事に追記しておきました。
freo_plugins_news_categoriesテーブルは作成できているとのことなので、上記方法をご利用いただき、データベースのフィールドを増やせば、アップデートは完了するはずです。
一度お試しください。
なにか不具合があるようでしたら再度教えて下さい。

  • 2014/04/03 01:30:23

mime

わざわざ調べていただいてありがとうございました、教えて頂いた方法で無事フィールドを追加し、アップデートできました!
ニュースアーカイブ表示プラグイン、ニュースタグクラウド表示プラグインも動作しています。
お手数をかけて申し訳ありませんでした、重ね重ねありがとうございました!

  • 2014/04/03 18:32:57

ミツ@32877

mimeさん→
無事アップデートできたようでよかったです。
ご報告ありがとうございました。
今後共よろしくお願いします。

  • 2014/04/03 19:56:52

コメント登録

登録フォーム
名前
メールアドレス
URL
コメント
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

新着コメント

Twitter

サイト内検索

ページ上部へ