PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
24609 | 21/02/22 09:36:26 | RE(12):PB12.6: MySQLへのINSERTができるようになった~その後~ By Wutian |
24608 | 21/02/18 12:31:57 | RE(11):PB12.6: MySQLへのINSERTができるようになった~その後~ By JBI |
24607 | 21/02/17 13:53:20 | RE(10):PB12.6: MySQLへのINSERTができるようになった~その後~ By Wutian |
24606 | 21/02/17 12:42:31 | RE(9):PB12.6: MySQLへのINSERTができるようになった~その後~ By JBI |
24605 | 21/02/16 14:38:42 | RE(8):PB12.6: MySQLへのINSERTができるようになった~その後~ By Wutian |
24604 | 21/02/16 10:54:11 | RE(7):PB12.6: MySQLへのINSERTができるようになった~その後~ By JBI |
24603 | 21/02/15 11:56:22 | RE(6):PB12.6: MySQLへのINSERTができない By JBI |
24602 | 21/02/15 09:50:10 | RE(5):PB12.6: MySQLへのINSERTができない By Wutian |
24601 | 21/02/09 13:20:47 | RE(5):PB12.6: MySQLへのINSERTができない By ハチ公 |
24600 | 21/02/09 11:55:12 | RE(4):PB12.6: MySQLへのINSERTができない By JBI |
24599 | 21/02/09 10:51:10 | RE(3):PB12.6: MySQLへのINSERTができない By ハチ公 |
24598 | 21/02/08 11:27:32 | RE(2):PB12.6: MySQLへのINSERTができない By JBI |
24597 | 21/02/08 10:58:42 | RE:PB12.6: MySQLへのINSERTができない By Lucky Rabbit |
24596 | 21/02/03 11:53:25 | PB12.6: MySQLへのINSERTができない By JBI |
カテゴリ:PowerBuilderの開発環境
日付:2021年02月15日 09:50 発信者:Wutian
題名:RE(5):PB12.6: MySQLへのINSERTができない
MySQLのトランザクション処理はかなり特殊?なようです。
私もMySQLに精通しているわけではないので、ググっただけですが、
AutoCommitがデフォルトでONだったり、AutoCommit=OFFでもSELECTなどの
SQL発行時点からトランザクションが開始されるなど、SQLServerで通って
いるからといって、(MySQLでも)問題ないとは判断できないのではと思います。
INSERT処理の抜粋で見ると、INSERT処理の流れでcommit using sqlca;としてますが、
私はcommitは分離して実行したいので、INSERT ~ using sqlca; commit;と分けます。
SQLServerではINSERTの流れでcommitでも良いのかもしれませんが、MySQLではNGなら
この部分は角変える必要があるし、そもそも、AutoCommitなどの設定値が違っていれば
その内容に合わせてトランザクション処理を見直したほうが良いと思います。
明確な解決策を提示できてないですが、まずはMySQLの設定から見直してSQLServerとの
違いを明確に把握したほうが良いのではないでしょうか。
>ありがとうございます。
>
>仰る通り、埋め込みSQLで困っています。
>私はPowerBuilderはかなりの初心者で、前任者が今回のシステムを構築し、
>MySQLへのマイグレーションする部分からの引継ぎのため、
>データウインドウの作成等はまったくやり方がわかっていません。
>ですので、ご教授頂いたデータウインドウは作成できていません。
>
>前回の補足ですが、commit using sqlca;をexecute using sqlca;に変更すると
>エラーは出ますが、INSERTされました。
>しかし、変更したときの1回のみで、それ以降は何回やってもINSERTされません。
>この現象もよくわからず、どうしていいか途方に暮れています。
>何かヒントをお持ちでしたらご教授ください。
>よろしくお願いいたします。
>
>
>>おはようございます。
>>埋め込みSQLで起きている問題を解決できないようですね。
>>私も環境がないので検証できませんが、データウインドウを作成して、InsertRow,Updateできますでしょうか?
>>もし、これができるとした場合、データウインドウのSqlprevewイベントの引数をMessageBoxで表示して、流れているSQLを確認することができます。
>>
>>
>>>ありがとうございます。
>>>ご教示頂いた通りにリテラルで囲んでみましたが、結果は変わりませんでした。
>>>補足ですが、エラーメッセージがでる件は、
>>>commit using sqlca;をusing sqlca;に変更すると
>>>エラーは出なくなります。
>>>しかし、結果は変わらずINSERTされません。
>>>他に何か方法がありましたらご教授願います。
>>>よろしくお願いいたします。
>>>
>>>
>>>
>>>>こんにちは
>>>>MySQLの環境を持っていないのでわかりませんが、テーブル名とカラム名をリテラルで囲んでみてください。
>>>>DBプロファイルにあります、「構文」「リテラルで囲む」をチェックONし、DBParmも確認してDB接続してください。
>>>>DBごとに、大文字、小文字の扱いもあるようです。
>>>>以上、よろしくお願いいたします。
>>>>
>>>>>お世話になります。
>>>>>
>>>>>同じプログラムを色々なデータベースで処理できるようなシステムを作っています。
>>>>>これまではSQLServer、Oracleに接続、処理できるように作成しました。
>>>>>
>>>>>今回はその同じプログラムを使用して、MySQLをデータベースにしているのですが、
>>>>>SELECTはできるのですが、その他のINSERT、UPDATE、DELETEがうまくできません。
>>>>>
>>>>>うまくいかないINSERT処理の抜粋を記載します。
>>>>>
>>>>>datetime wlog_time
>>>>>wlog_time = datetime(today(),now())
>>>>>※:set_は他で取得できています。
>>>>> INSERT INTO USYS_LOG (
>>>>> USER_ID,
>>>>> ACTION_MSG,
>>>>> PGM_ID,
>>>>> TABLE_ID,
>>>>> LOG_TIME,
>>>>> STATUS_MSG
>>>>> )
>>>>> VALUES (
>>>>> :set_user_id,
>>>>> :set_action_msg,
>>>>> null,
>>>>> null,
>>>>> :wlog_time,
>>>>> :set_status_msg
>>>>> )
>>>>> commit using sqlca;
>>>>>
>>>>>実行すると以下のエラーメッセージを取得しました。
>>>>>SQLDBCode=1064
>>>>>sqlstate=37000
>>>>>[MySQL][ODBC 8.0(w) Driver][mysqld-8.0.23]
>>>>>You have an error in your SQL syntax;
>>>>>check the manual that corresponds to your MySQL server version for the right syntax to use near 'commit' at line 1
>>>>>
>>>>>しかし、同じプログラムでデータベースをSQLServerに変更するとちゃんとINSERT処理されます。
>>>>>何がおかしいのか全くわからないので教えてください。
>>>>>よろしくお願いいたします。
付加情報:
PowerBuilder Version 12.6
Client SoftWare
OS Windows10
DBMS その他
Browser Chrome
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.