■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

記事・ページの複製時にエラーが出る

Garyuten > 記事・ページの複製時にエラーが出る @ 2012/6/22 1:04
こちらと同じようなエラーが出ていたんですが、解決策がわからなかったので投稿しています。

デバッグモード時にWarningが出る件について|フォーラム|baserCMSユーザーズ
http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=419&forum=8
デバッグモード時の検索時にエラー|フォーラム|baserCMSユーザーズ
http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=455&forum=8#forumpost2159

※デバックモード1の時に固定ページ一覧、ブログ記事一覧で複製を行うと、エラーメッセージが表示され複製できませんでした。
(以下はブログの記事複製)


Warning (2): pg_query() [function.pg-query]: Query failed: ERROR:  invalid input syntax for integer: ""
LINE 61: ', '10', '1', '', '2012-06-15 14:44:45', '', '', NULL, NULL,...
                       ^ [CORE/cake/libs/model/datasources/dbo/dbo_postgres.php, line 155]
Warning (512): SQL Error: ERROR:  invalid input syntax for integer: ""
LINE 61: ', '10', '1', '', '2012-06-15 14:44:45', '', '', NULL, NULL,...
                       ^ [CORE/baser/models/datasources/dbo_source.php, line 596]
Query: INSERT INTO "bc_pg_blog_posts" ("blog_content_id", "no", "name", "content", "detail", "blog_category_id", "user_id", "status", "posts_date", "content_draft", "detail_draft", "publish_begin", "publish_end", "exclude_search", "modified", "created") VALUES ( ...


ノーマルモードだと以下のメッセージでした
処理に失敗しました。(500)
Internal Server Error


パッチが出ているのかもしれないですが、探しても見つかりませんでした。

クライアントさんに準備してもらったVPS環境なので、
何かしら問題があるのかもしれません。

どなたかわかる方がいましたらご解答よろしくおねがいします。



■ BaserCMSのバージョン:2.0.2
■ レンタルサーバー名: さくらVPS
■ スマートURLの利用: [ON]
■ 設置フォルダ: ドキュメントルート
■ 利用しているデータベース: PostgreSQL
■ PHPスキル(自己評価): C

■ OSの種類:Linux 3.2.12-gentoo / Apache 2.0 Handler
■ PHPのバージョン: 5.3.13-pl0-gentoo
■ データベース種類・バージョン:PostgreSQL (不明)

goichi > Re: 記事・ページの複製時にエラーが出る @ 2012/6/22 22:17
こんにちは。
根本的な解決策でなくて申し訳ないのですが、
cakePHP由来のエラーのような気がしないでもありません。
(個人的にcakePHPってPostgreSQLに弱いイメージがあるのです。。。)

エラーとしては、
整数値が入るべき場所に、他のものを入れようとしている時などに出たりするものだと思いますが
空欄でも、「空の文字列」とみなされると同様のエラーを吐くかもしれません。

たぶん、DBをMySQLに変えると出なくなるエラーじゃないかと思います。(推測です。すみません・・・。)


Garyuten > Re: 記事・ページの複製時にエラーが出る @ 2012/6/27 14:27
>goichiさま
回答有り難うございます。
cakePHP由来のエラーなのですね…

>たぶん、DBをMySQLに変えると出なくなるエラーじゃないかと思います。(推測です。すみません・・・。)
お客様の環境なのでこちらとしてはDBを入れ替えるというのはできない状況でして…
ともかく、どうしようもない状況というのはわかりました。

運用面でカバーしてもらうか、別サーバーを用意してもらうか何かしら対応策を検討してみます。
kiwanami > Re: 記事・ページの複製時にエラーが出る @ 2012/6/27 23:08
当方 PostgresSQL 9.1.4 環境です。
以下のような修正を行うと、エラーが出なくなりました。

修正箇所:/baser/models/datasources/dbo/dbo_bc_postgres.php


diff -c dbo_bc_postgres.php.org dbo_bc_postgres.php
*** dbo_bc_postgres.php.org     Wed Jun 27 19:06:33 2012
--- dbo_bc_postgres.php Wed Jun 27 18:56:11 2012
***************
*** 214,219 ****
--- 214,225 ----
                                }
                        case 'inet':
                        case 'integer':
+                       if ($data === '') {
+                           return $read ? 'NULL' : 'DEFAULT';
+                       }
+                       if (!$read && $data == '') {
+                           return 'NULL';
+                       }
                        case 'date':
                        case 'datetime':
                        case 'timestamp':


ただ、「サイト内検索の検索結果より除外する」にチェックが入っているとエラーになるようです。
記事・ページcreate時のPKの値が取れてないような感じのエラーです。
もうちょっと調べてみます。
kiwanami > Re: 記事・ページの複製時にエラーが出る @ 2012/6/28 1:45
先ほどの続きです。
Blogプラグインにて、「サイト内検索の検索結果より除外する」にチェックが入っている記事を複製すると、以下のようなエラーの表示が出てきました。


Notice (8): Undefined index: id [CORE/baser/plugins/blog/models/blog_post.php, line 491]


以下の修正を行うとエラーが出なくなりました。

修正箇所 : /baser/plugins/blog/models/blog_post.php


diff -wc blog_post.php.org blog_post.php

*** blog_post.php.org   Wed Jun 27 23:31:58 2012
--- blog_post.php       Wed Jun 27 23:34:44 2012
***************
*** 488,494 ****
--- 488,502 ----
                if(!$this->data['BlogPost']['exclude_search']) {
                        $this->saveContent($this->createContent($this->data));
                } else {
+                     if (!empty($this->data['BlogPost']['id'])) {
+                         //$this->log("UPDATE: PK=" . $this->data['BlogPost']['id'],LOG_DEBUG);
                          $this->deleteContent($this->data['BlogPost']['id']);
+                     } else if (!empty($this->id)) {
+                         //$this->log("INSERT: PK=" . $this->id,LOG_DEBUG);
+                         $this->deleteContent($this->id);
+                     } else {
+                         $this->cakeError('Not found pk-value in BlogPost.');
+                   }
                }
  
        }


多分この修正で合ってると思うのですが、もし間違っていたら教えてください。

よろしくおねがいします。
ryuring > Re: 記事・ページの複製時にエラーが出る @ 2012/6/28 13:29
kiwanamiさん、修正コードありがとうございました。

動作も確認し、コードについても特に問題ありませんでしたので開発レポジトリに取り込ませて頂きました。
[2.0.2] PostgreSQLでブログ記事のコピーができない

ちなみに githubは利用されてますか?
もしよろしければ、コアパッケージをフォークしてください。
basercms の github

フィードバックの手順はこちらをこちらを参考にしてください。
開発ドキュメント
開発への参加方法
開発フロー1(フォーク編)

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

kiwanami > Re: 記事・ページの複製時にエラーが出る @ 2012/6/28 17:41
ご確認ありがとうございます!

github やってます!
次回コード修正したときは pull request でお送りします。

フィードバックの手順の説明がものすごく丁寧で感動しました。
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
29 人のユーザが現在オンラインです。 (27 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 29