sql >> データベース >  >> RDS >> PostgreSQL

デバッグ方法:内部エラー現在のトランザクションは中止され、トランザクションブロックが終了するまでコマンドは無視されます

    ほとんどの場合、これはを意味します SQLステートメントの実行に失敗しました。この場合、次のことを行う必要があります。

    1. SQLを有効にするロギング 、settings.pyに貼り付ける次のスニペットを参照してください

    2. DEBUG=1を設定 、またはSQLはログに記録されません

    3. runserverを再度実行する 、コンソールにすべてのSQLクエリが表示されます

    4. 最後のSQLクエリをデータベースで直接実行します 、次に、失敗したクエリを見つけてデバッグできるようにする必要があります。または、問題の原因となったクエリに固有の新しい質問を開く必要があります。 phpMyAdmin、直接CLIクライアント、またはその他のデータベースクライアントを使用して、愛が必要なものが見つかるまでSQLクエリを1つずつ実行できます。

    SQLロギング構成:

    LOGGING = { 
       'version': 1,
       'disable_existing_loggers': True,
       'formatters': {
           'simple': {
               'format': '%(levelname)s %(message)s',
           },  
       },  
       'handlers': {
           'console':{
               'level':'DEBUG',
               'class':'logging.StreamHandler',
               'formatter': 'simple'
           },  
       },  
       'loggers': {
           'django': {
               'handlers': ['console'],
               'level': 'DEBUG',
           },  
       }   
    }
    

    この構成でrunserverを使用した追加のコンソール出力が提供されない場合 、その後、django-autocomplete-lightのサンプルtest_project

    1. インストールコマンドを読んで/tmpに貼り付けます

    2. dirをautocomplete_light_env/src/django-autocomplete-light/test_projectに変更します

    3. test_project/settings.pyを開きます 、LOGGINGを置き換えます 上記のものによる構成

    4. サーバーを実行してブラウザを開きます

    コンソールは次のようになります:

    Validating models...
    
    0 errors found
    Django version 1.4.1, using settings 'test_project.settings'
    Development server is running at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.
    DEBUG (0.001) SELECT "django_content_type"."id", "django_content_type"."name", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" WHERE ("django_content_type"."model" = taggable  AND "django_content_type"."app_label" = charfield_autocomplete ); args=('taggable', 'charfield_autocomplete')
    DEBUG (0.000) 
            SELECT DISTINCT "tagging_tag".id, "tagging_tag".name
            FROM
                "tagging_tag"
                INNER JOIN "tagging_taggeditem"
                    ON "tagging_tag".id = "tagging_taggeditem".tag_id
                INNER JOIN "charfield_autocomplete_taggable"
                    ON "tagging_taggeditem".object_id = "charfield_autocomplete_taggable"."id"
    
            WHERE "tagging_taggeditem".content_type_id = 11
    
            GROUP BY "tagging_tag".id, "tagging_tag".name
    
            ORDER BY "tagging_tag".name ASC; args=[]
    



    1. ドライバをロードできません:com.mysql.jdbc.Driver

    2. nullの場合のルックアップを使用したMySQLINSERT

    3. golangsqlドライバーのprepareステートメント

    4. FOREIGN KEYがある場合とない場合のREFERENCESの使用の違いは?