Webサーバのバージョン : apache 1.3.42
PHPのバージョン : 5.4.23
データベースのバージョン : mysql 5.1.73
MODXのバージョン : 1.0.14J-r3
これまで、eFormを利用していましたが、先日、cfFormMailerを使い始めました。
何とか設定ができ、使える状態になったので、cfFormDBも使ってみようと思ったのですが、メールを送信すると、次のようなエラーが出ます。(メール自体は送信されます)
« Execution of a query to the database failed - Duplicate entry '1' for key 'PRIMARY' »
SQL > INSERT INTO `testdb`.`test_cfformdb_detail`(postid,field,value,rank) VALUES(1, 'name_l', 'john', 1)
name_lは2番目の項目で、最初の項目(name_f)は登録されています。
エラーメッセージから、主キーがかぶってしまっている、ということだと思うのですが、サンプルページをほぼそのまま使ってみたもので試しても同様でした。
また、まだ成功していないのでうまくいったときのDBの状態がどうなるかが解らないのですが、上記のエラーからそのまま推測すると、項目ごとに新しいレコードになる、ということなのでしょうか?
イメージとしては、「一つの投稿が一つのレコード」ですが、実際にはそういう形になるのでしょうか?
バグ報告かトラブル相談か迷ったのですが、ほぼサンプルのまま(メール宛先等のみ変更)で出たエラーなので、こちらで報告させていただきました。
よろしくお願いいたします。
cfFormDBでエラー
Re: cfFormDBでエラー
---------------------------------------------------------------
Webサーバのバージョン : apache 2.2.15
PHPのバージョン : 5.4.26
データベースのバージョン : 5.5.39-MariaDB-log
MODXのバージョン : 1.0.14J-r4
---------------------------------------------------------------
« Execution of a query to the database failed - Duplicate entry '1' for key 'PRIMARY' »
INSERT INTO `evo`.`modx_cfformdb_detail`(postid,field,value,rank) VALUES(1, 'name_l', '', 1)
同様の問題です。mhiroさんが全て書いてくださっているとおりです。
サンプルをそのままコピペしてもダメでした。
よろしくお願い致します。
Webサーバのバージョン : apache 2.2.15
PHPのバージョン : 5.4.26
データベースのバージョン : 5.5.39-MariaDB-log
MODXのバージョン : 1.0.14J-r4
---------------------------------------------------------------
« Execution of a query to the database failed - Duplicate entry '1' for key 'PRIMARY' »
INSERT INTO `evo`.`modx_cfformdb_detail`(postid,field,value,rank) VALUES(1, 'name_l', '', 1)
同様の問題です。mhiroさんが全て書いてくださっているとおりです。
サンプルをそのままコピペしてもダメでした。
よろしくお願い致します。
Re: cfFormDBでエラー
了解です、後ほど修正します。
Re: cfFormDBでエラー
こんばんは。
私もcfFormDBは利用させていただいており、参考になるかわかりませんが、どこかで見たエラーだったので情報提供まで。
https://github.com/clefarray/cfFormDB/b ... .class.php
391行目、新規利用時のテーブル作成のクエリのところ。
は、
と、primary keyの指定を取る必要があります。
「cfformdb_detail」のテーブルは、cfformdbテーブルと1対多のリレーションになっていて、ここのpostid(投稿ID)にはフィールド数分、同一値が重複して入ってきますので。
このため、たぶん当該コードを修正して、cfformdb_detailとcfformdbのテーブル削除後にもう一度実行すると解消されると思います。
以前のバージョンでは問題がなくて、その後にバージョンアップしただけの場合には、このテーブル新規作成が実行されませんから、気付きにくい不具合だったと思います。
時間的な問題で、検証せずでの投稿ですので、もしも勘違いだったらご容赦ください。
とりいそぎ。
私もcfFormDBは利用させていただいており、参考になるかわかりませんが、どこかで見たエラーだったので情報提供まで。
https://github.com/clefarray/cfFormDB/b ... .class.php
391行目、新規利用時のテーブル作成のクエリのところ。
コード: 全て選択
$sql = "CREATE TABLE {$this->tbl_cfformdb_detail} (`postid` int not null primary key, `field` varchar(255) not null, `value` text, `rank` int) ENGINE=MyISAM";
コード: 全て選択
$sql = "CREATE TABLE {$this->tbl_cfformdb_detail} (`postid` int not null, `field` varchar(255) not null, `value` text, `rank` int) ENGINE=MyISAM";
「cfformdb_detail」のテーブルは、cfformdbテーブルと1対多のリレーションになっていて、ここのpostid(投稿ID)にはフィールド数分、同一値が重複して入ってきますので。
このため、たぶん当該コードを修正して、cfformdb_detailとcfformdbのテーブル削除後にもう一度実行すると解消されると思います。
以前のバージョンでは問題がなくて、その後にバージョンアップしただけの場合には、このテーブル新規作成が実行されませんから、気付きにくい不具合だったと思います。
時間的な問題で、検証せずでの投稿ですので、もしも勘違いだったらご容赦ください。
とりいそぎ。
Re: cfFormDBでエラー
yama さま
あっ、そこですね。
気付いた時点で共有できず申し訳なかったです。
とりいそぎ。
あっ、そこですね。
気付いた時点で共有できず申し訳なかったです。
とりいそぎ。
Re: cfFormDBでエラー
noka様 yama様
noka様ご指摘の通りに修正して実行したところ、エラーもなくうまくいきました。
ありがとうございます。
noka様ご指摘の通りに修正して実行したところ、エラーもなくうまくいきました。
ありがとうございます。