mysql.connector を使用して SQL 操作を行います。カーソル上で次の操作 (文字列) を実行する短いスクリプトがありますcursor.execute(...)
。
"use {}".format(db)
"show tables"
command = """
ALTER TABLE Object DROP PRIMARY KEY;
ALTER TABLE Object ADD `id` bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;
ALTER TABLE Object ADD INDEX (`uid`);"""
スクリプトは複数のデータベースを反復処理しますdb
。
問題は、ある時点で「未読の結果が見つかりました」というエラーが表示されることです。スクリプトを実行すると、ある時点で「use mydb」が結果 (curs._have_result=True) を返しますが、予期していなかったようです。奇妙なことに、完全なスクリプトを再実行すると、後で同じエラーが発生するデータベースが増えるため、少し長く実行されます。
この問題を解決または調査する方法を提案できますか? 「未読結果」を防ぐためにできることはありますか?
PS: スクリプトを再実行すると、既に実行されているデータベースに対して ALTER コマンドが失敗します。それが問題を引き起こすかどうかはわかりません。