バグに取り組む-phppgadmin

クライアントの1人がタスクを設定します-データベースダンプはphpPgAdminを介して流されません。 次のようなメッセージ:エラー:relation "public"。 "Company" does not existはエラーログに表示されます。



パブリックスキーマが利用可能で、会社のテーブルはありません。 検索中に、コンソールから同じダンプが問題なく注がれていることがわかります。 phpPgAdminでWebフォームにアップロードすると、すべてが正常に機能します。 しかし、このダンプをファイルと同じphpPgAdminにロードすると、エラーが発生します。



データベースダンプの短縮コンテンツは次のとおりです。



DROP TABLE IF EXISTS "public"."company"; CREATE TABLE "public"."company" ( "id" int4 NOT NULL, "name" varchar(255) COLLATE "default" NOT NULL, "address" varchar(255) COLLATE "default", ) WITH (OIDS=FALSE) ; COMMENT ON COLUMN "public"."company"."name" IS ''; COMMENT ON COLUMN "public"."company"."address" IS ''; -- ---------------------------- -- Records of company -- ---------------------------- INSERT INTO "public"."company" VALUES ('1', ' " "', ' ,  , . ');
      
      





テーブルを作成するコマンドの後のセミコロンの異常な位置が目を引きます-別の行に。



別の行からCREATE TABLEコマンドの最後の行に転送する場合、データベースダンプを使用したファイルの処理は問題なく機能します。



phpPgAdminコードを検索すると、/ classes / database / Postgres.phpファイルのexecuteScript関数に移動します



この関数は、ダウンロードしたファイルをSQLスクリプトで解析するために呼び出されます。 ifの中括弧付きのバグが含まれています。 そして最後に、行がセミコロンで始まっている場合、pg_queryは実行されませんでした。 コードを修正し、テストしました-すべてが機能します。



次に、見つかったバグをphpPgAdmin作成者に報告する必要があります。 phppgadminはgithubにあるため、これを行うのは非常に簡単です。



github.comにアクセスして登録します。

Github.com/phppgadmin/phppgadminプロジェクト

オープンプルリクエストを見ると、私たちが一人ではないことがわかります。

このバグに遭遇した人は他にもいますが、私の意見では、それを修正するために誤ってアプローチしました。

したがって、問題の解決策を提供します。



右側の[フォーク]ボタンを押して、githubがプロジェクトをコピーするまで少し待ちます。

私たちは今、自分でプロジェクトを複製しています

 git clone https://github.com/LuckySB/phppgadmin
      
      





バグを修正し、コミットし、プッシュ(githubのログイン詳細を入力)し、バグが修正された独自のフォークphppgadminをお楽しみください。



立ち止まった後、緑色のボタン「比較、確認、プルリクエストの作成」をクリックします。 Githubはメインプロジェクトへの変更要求を作成しますが、ここで最も難しいのはパッチの詳細なコメントを書くことです。



次のようなものを得ました: github.com/phppgadmin/phppgadmin/pull/30



All Articles