みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
質問させて下さい。
FileMakerServer19.5.3 にPHPから接続したいので
システムDNSにFileMakerODBCDriverで登録しました。
登録時のテストでは問題なく完了しました。
FileMakerFile : 入金管理.fmp12
TO : 入金管理
テーブル : 入金管理
PHPから
$dsn = 'add'; //登録したdsn名
$user = 'admin';
$password = 'パスワード';
$conn = odbc_connect($dsn,$user,$password);
$sql = 'select * FROM "入金管理" WHERE "有効flg"=1';
$result = odbc_exec($conn, $sql);
として接続してみたのですが、下記のエラーが返ってきます。
odbc_exec(): SQL error: [FileMaker][FileMaker] FQL0001/(1:32): There is an error in the syntax of the query., SQL state 42000 in SQLExecDirect in C:\Program Files\FileMaker\FileMaker Server\HTTPServer\conf\odbc_test\odbc_01.php on line 7
単純なSQLだと思うのですが何がSQLエラーなのか。。。
locolhost上のFileMakerServerにアクセスするのには、FileMakerODBCDriverのインストールだけでよいのでしょうか?クライアントは必要なのでしょうか?
わかる方いらっしゃったらお願いします。
---ゆかり
文法エラーですから、そのSQL文をデータビューアで実行してみては?
文法エラーですから、そのSQL文をデータビューアで実行してみては?
ご返信ありがとうございます。
データビューアでSQLを実行できるのでしょうか?
すみません調べたのですがちょっと方法がわかりませんでした。。。
---ゆかり
私のPCにPHPとFileMakerODBCDriverをインストールして、ローカルファイルにアクセスしてデータビューアを監視するという事ですかね。
ゆかり
いや、そのファイルをFMで開けばExecuteSQL関数でSQLを実行できます。
追加情報です。
ExecuteSQLは問題なく通りました。
調べていくとどうもメモリが関係しているようです。
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 2607045148673 bytes)
さてIISなのかPHPなのかODBCDriverなのかFileMakerServerなのか問題の切り分けが難しいです。。。
---ゆかり
PHPのメモリ設定が256MBなのでは?余裕があるならもっと増やすか、SQLの結果が少なくなるように条件を追加しないとだめなんでしょう。
と思ったら、「2607045148673 bytes」と言ってるので、2.5TBぐらい必要ってことで、増やす方は無理そうですね。。。
SQLをCOUNT(*)にすれば実行できますかね?
結果の件数が多いのでなく単純にPHPのコードがミスってて無限ループ的になってるとかもありえるかも...
SQLをCOUNT(*)にすれば実行できますかね?
結果の件数が多いのでなく単純にPHPのコードがミスってて無限ループ的になってるとかもありえるかも...
ご返信ありがとうございます。
SQL変えても状態変わらずですね泣
Fatal error: Out of memory (allocated 2097152) (tried to allocate 2065879269632 bytes) in C:\Program Files\FileMaker\FileMaker Server\HTTPServer\conf\odbc_test\odbc_01.php on line 7
FilerMakerServer19.5.3の同梱ODBCDriver(19.5.1.2)側の問題でしょうか?
---ゆかり
COUNT(*)ならデータは1行しかないので、それで2TBもメモリが必要になるのはODBCとかFMとは関係なくPHPのコードがおかしいんだと思います。
しかし、今回は設定の上限に達する以前にメモリが不足してますね。
サーバのメモリは十分ありますか?
COUNT(*)ならデータは1行しかないので、それで2TBもメモリが必要になるのはODBCとかFMとは関係なくPHPのコードがおかしいんだと思います。
しかし、今回は設定の上限に達する以前にメモリが不足してますね。
サーバのメモリは十分ありますか?
16Gあるので充分だと思われます。
—-ゆかり
ハードの実装メモリでなく、現在使用可能なメモリ量です。
1回目のエラーメッセージでは、PHPの設定サイズを超えたエラーですが、2回目のは、そこに達する前にエラーになってるので、空きメモリが2MBぐらいしかなかったのだと思います。
よくわからないなら、一度再起動してみては?
しかし「(tried to allocate 2065879269632 bytes) 」と、2TB使用しようとしてますから、どっちにしてもPHPのプログラム(odbc_01.php)を直さないとエラーは解決しないでしょう。
お騒がせしました。
PDOで接続できました〜
himadanee様 最後まで付き合っていただきありがとうございました(m__m)
—-ゆかり
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 521.43 KiB (Peak: 525.98 KiB) ]