MySQL ストアド プロシージャの使用時に Python で発生する「コマンドが同期していない」エラーを修正する方法

Mary-Kate Olsen
リリース: 2024-11-22 11:25:11
オリジナル
290 人が閲覧しました

How to Fix the

MySQL でストアド プロシージャとインターフェイスするときに Python で「コマンドが同期していない」エラーを解決する

Python で、Django を利用してストアドを実行する場合MySQL のプロシージャで発生する一般的なエラーは、「コマンドが同期していません。このコマンドは実行できません」です。 今。"このエラーは、トランザクションがまだ進行中のプロシージャ呼び出しに続いて 2 番目のステートメントを実行しようとすると発生します。

この問題を解決するには、プロシージャの実行に使用したカーソルを閉じて、その前に新しいカーソルを作成することが重要です。後続のステートメントの実行:

cursor.close()

cursor = connection.cursor()
ログイン後にコピー

プロシージャ呼び出しの結果をフェッチした直後にカーソルを閉じることができます。結果セットは影響を受けず、引き続きアクセスできます。

例として単純化された MySQL プロシージャを考えてみましょう。

delimiter $$
create procedure my_mysql_procedure(p_page_id int)
begin

        select 1
        from dual; 

    end$$
delimiter ;
ログイン後にコピー

Python 内では、実行しようとすると「コマンドが同期していません」というエラーが発生します。次のコードに示すように、プロシージャを呼び出した後に別のステートメントを実行します。

cursor.callproc('my_mysql_procedure', [some_id,]) 
result = cursor.fetchall()
for r in result:
    do something

cursor.execute("select * from some_table")
result = cursor.fetchall()
ログイン後にコピー

By close andプロシージャ呼び出し後にカーソルを再度開くと、エラーが解消され、後続のステートメントは問題なく実行できるようになります。このソリューションにより、MySQL は正しいコマンド シーケンスを維持し、後続のデータベース操作をシームレスに実行できるようになります。

以上がMySQL ストアド プロシージャの使用時に Python で発生する「コマンドが同期していない」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート