1. ホーム
  2. マイスル

Mysql の例外 'SET OPTION SQL_SELECT_LIMIT=DEFAULT' です。

2022-02-28 02:45:43
<パス

ハイブを使用する際、このような例外が発生しました。ハイブのメタデータはmysqlのデータベースに保存されているため、ハイブのテーブルの操作は、それに応じてデータベースのテーブルのデータを操作することになり、問題はテーブルを削除するときに発生し、作成時には例外は発生しませんでした。資料を参照したところ、mysqlはjdbc経由でリンクする際に「SET OPTION SQL_SELECT_LIMIT=DEFAULT」をテストするが、バージョン5.6以降ではセットメソッドは非推奨であることがわかりました。

例外情報

NestedThrowablesStackTrace:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1


例外解析

私はデータベースバージョン5.7を使用していますが、ドライババージョン5.1.8で、現在5.7データベースでサポートされているセット文は次のとおりです。
https://dev.mysql.com/doc/refman/5.7/en/set-statement.html

The SET statement has several forms:

SET var_name = value enables you to assign values to variables that affect the operation of the server or clients. See Section 14.7.4.1, "SET Syntax for Variable Assignment".

SET CHARACTER SET and SET NAMES assign values to character set and collation variables associated with the current connection to the server. 14.7.4.2, "SET CHARACTER SET Syntax", and Section 14.7.4.3, "SET NAMES Syntax".

SET PASSWORD assigns account passwords. See Section 14.7.1.7, "SET PASSWORD Syntax".

SET TRANSACTION ISOLATION LEVEL sets the isolation level for transaction processing. See Section 14.3.6, "SET TRANSACTION Syntax ".

セットオプション SQL_SELECT_LIMIT...は非推奨です。また、この構文は 5.6 以降では削除されています。

5.6 関連する設定ディレクティブ
https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_sql_select_limit

しかし、ドライバのバージョンが低い場合、以前のsetコマンドをそのまま使用するとエラーになります。

解決方法

ドライバのバージョンとデータベースのバージョンをできるだけ対応させてアップグレードしてください。この問題は、5.1.22以上に変更することで解決します。

StackOverflowを使用する
http://stackoverflow.com/questions/15669270/option-sql-select-limit-default