MySQLのエラー:クエリは、単純なINSERT文の(1065)空でした
-
19-09-2019 - |
質問
私はテーブルを作成する大規模なスクリプトを実行しようとすると、それにはほぼ15,000行を挿入しています。表がうまく作成されます、その後、833 INSERTで、私はエラーを取得します:
Error: Query was empty (1065)
ここに私の第八百三十三INSERT文(失敗している1)があります:
INSERT INTO CLASSCODE (CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT) VALUES (10255, "Funeral Directors - incl PL other than Crematory - 10255", 3, "Service", "AZ", 19980801, NULL);
私は働く構文エラーまたはこのライン間の違い、および1を参照することはできません。参考のために、ここだけで正常に動作INSERT文の例があります:
INSERT INTO CLASSCODE (CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT) VALUES (10425, "Frame Shop - Picture/Posters - 10425", 2, "Retail", "AZ", 19980801, NULL);
私はパズルの部分はエラーが私が空まで来ていた別のSELECT文からのデータを使用して、新しい行を移入された場合はどうなるの何かのように聞こえるということです。私のINSERT文は、すべての静的データを使用しているとしてそれは、しかし、そうではありません。
私のテーブル定義は次のようになります:
CREATE TABLE CLASSCODE (
CLASS_CODE INTEGER NOT NULL,
CLASS_CODE_NAME VARCHAR(60) NOT NULL,
RATE_GROUP SMALLINT NOT NULL,
PROGRAM_NM VARCHAR(20) NOT NULL,
ST_CODE CHAR(2),
EFF_DT DATE,
EXP_DT DATE)
私はGUIのMySQLクエリブラウザでこのスクリプトを実行しています。
私が挿入しようとしている行数とは何かだろうか?私は定期的にコミットする必要がありますか?シンプルな何かがあり、私はちょうど見下ろすだということ?
ありがとうございます。
解決
私は、ターミナルまたはSSHセッションでコマンドラインからSQLを実行しているお勧めします。 GUIインターフェイスは、との干渉やインサートの多数を実行するためにあなたの能力を制限することができる。
他のヒント
スクリプトファイルでは、これらの中に実行するための最も一般的なシナリオは、次のとおりです。
INSERT INTO CLASSCODE
(CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT)
VALUES
(10255, "Funeral Directors - incl PL other than Crematory - 10255", 3, "Service", "AZ", 19980801, NULL)
;;
私は、スクリプトを使用してクイック検索を行うと、;;
は、ライン833を中心にそこにあるかどう参照してくださいね。
他のインサートは大丈夫働いているし、それらの構造の違いがあるように表示されませんので、私の最初の考えはあなたが挿入数833で、いくつかのリソースが不足しているということです。
あなたは(あなたのトランザクションバッファの容量が不足していることもある)各挿入後にコミットしない場合は、はどうなりますか?それは、その後動作しますか?実際には、より良いテストは、あなたが833を超えて取得する場合は、単一のトランザクション番号800でコミットだろう、それがあなたの問題だった。
その場合は、、単にスクリプト修正すべての100かそこらのインサート(すべての挿入後にコミットするには、おそらくそれがたまらなく遅くなります)コミットする(またはスクリプトのIDを作成するスクリプトをそれが自動生成されます)。
あなたは、実際のクエリ構文心配している場合、それは罰金です。私はあなたのテーブルを作成し、挿入を実行し、それが働きました。あなたがスクリプトを実行していると言うとき、あなたはちょうどあなたがを通じて実行している生のSQLの完全なファイルを持っているのですか?人々はJDBC型のものを使用して、そのループロジックが台無しに持っている時が、私がされている前に、「空の問い合わせ」タイプのエラーに遭遇しました。
私たちは安全にそれはあなたが貼り付けられている特定のINSERT文ではないと言うことができると思い、スクリプトで、そのクエリの周りに何かサーバー関連や構文があるはずです。あなたが何かを再設定していない限り、行は自動的にコミット取得する必要があります。あなたは実行してみることができ、「ショーの変数;」 mysqlコマンドラインから、ここでそれを追加します。私たちは、あなたのセットアップを見て、何が奇妙に見えるかどうかを確認することができます。
あなたは再注文のファイルにあなたのインサートのいくつかを試してみましたか?それは、特定のクエリまたはファイル内の特定のスポットに失敗だ場合には、少なくとも私たちに教えてくれます。それは別の場所に失敗した場合、それはまだ約833失敗した場合、または単に見るためにあなたのインサートを並べ替えてみてください。それは同じ場所に落ちる場合は、メモリやバッファに関連したもののように聞こえます。あなたはそれを移動するとき、それは場所を変更した場合、私はあなたが浮遊文字を持っていると思います(;または多分)。@zombatが言ったように周りのどこかに敷設
お役に立てば幸いです。私たちは何をすることができます知ってみましょう。
私は今日、同じエラーが発生しました。どうやら、私はPDOのために準備されたステートメントを使用していたとき:照会しながら、MySQLやテーブルはNULLのデータを持っていた。
。私はテーブルから欠落しているすべてのデータを修正する必要がありました。