--- name: snowflake-common-errors description: 'Diagnose and fix common Snowflake errors and SQL compilation failures. Use when encountering Snowflake error codes, failed queries, authentication issues, or warehouse/connection problems. Trigger with phrases like "snowflake error", "fix snowflake", "snowflake not working", "snowflake SQL error", "snowflake 002003". ' allowed-tools: Read, Grep, Bash(curl:*) version: 1.0.0 license: MIT author: Jeremy Longshore tags: - saas - data-warehouse - analytics - snowflake compatibility: Designed for Claude Code --- # Snowflake Common Errors ## Overview Quick reference for the most common Snowflake error codes, SQL compilation errors, and driver issues with real solutions. ## Error Reference ### 002003 (42S02): Object Does Not Exist ``` SQL compilation error: Object 'MY_DB.MY_SCHEMA.USERS' does not exist or not authorized. ``` **Causes:** Table doesn't exist, wrong database/schema context, or role lacks privileges. **Solutions:** ```sql -- Check current context SELECT CURRENT_DATABASE(), CURRENT_SCHEMA(), CURRENT_ROLE(); -- Verify object exists SHOW TABLES LIKE 'USERS' IN SCHEMA MY_DB.MY_SCHEMA; -- Grant access if needed GRANT SELECT ON TABLE MY_DB.MY_SCHEMA.USERS TO ROLE MY_ROLE; -- Use fully-qualified names to avoid context issues SELECT * FROM MY_DB.MY_SCHEMA.USERS; ``` ### 000606: No Active Warehouse ``` SQL execution error: No active warehouse selected in the current session. ``` **Solutions:** ```sql -- Set warehouse for session USE WAREHOUSE COMPUTE_WH; -- Or set in connection config -- warehouse: 'COMPUTE_WH' in createConnection() -- Check warehouse state SHOW WAREHOUSES LIKE 'COMPUTE_WH'; -- If SUSPENDED, it auto-resumes if AUTO_RESUME = TRUE ``` ### 390100: Incorrect Username or Password ``` Incorrect username or password was specified. ``` **Solutions:** ```bash # Verify credentials are set echo $SNOWFLAKE_ACCOUNT # Should be 'orgname-accountname' echo $SNOWFLAKE_USER # Test with SnowSQL snowsql -a $SNOWFLAKE_ACCOUNT -u $SNOWFLAKE_USER # Check account format — common mistake: # Wrong: myaccount.us-east-1.snowflakecomputing.com # Right: myorg-myaccount ``` ### 390144: JWT Token Invalid (Key Pair Auth) ``` JWT token is invalid. ``` **Solutions:** ```bash # Verify public key is assigned # Run in Snowflake: # DESC USER my_user; # Check RSA_PUBLIC_KEY column # Regenerate if needed openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub # Re-assign (remove headers/newlines from pub key first) # ALTER USER my_user SET RSA_PUBLIC_KEY='MIIBIj...'; ``` ### 001003: SQL Compilation Error ``` SQL compilation error: syntax error line X at position Y unexpected 'TOKEN'. ``` **Common causes:** ```sql -- Missing semicolons in multi-statement mode -- Wrong: SELECT 1 SELECT 2 -- Right: SELECT 1; SELECT 2; -- Reserved word used as identifier -- Wrong: SELECT order FROM orders -- Right: SELECT "order" FROM orders -- Wrong function syntax -- Wrong: DATEADD('day', 1, col) -- Right: DATEADD(day, 1, col) -- no quotes on date part ``` ### 100038: Statement Timeout ``` Statement reached its statement or warehouse timeout of X second(s). ``` **Solutions:** ```sql -- Increase statement timeout (seconds) ALTER SESSION SET STATEMENT_TIMEOUT_IN_SECONDS = 3600; -- Or per-warehouse ALTER WAREHOUSE COMPUTE_WH SET STATEMENT_TIMEOUT_IN_SECONDS = 3600; -- Check if query needs optimization SELECT query_id, query_text, execution_status, error_message, total_elapsed_time / 1000 AS seconds FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY()) WHERE execution_status = 'FAIL' ORDER BY start_time DESC LIMIT 10; ``` ### 100035: Out of Memory / Result Too Large ``` Results exceed the allowed data size. ``` **Solutions:** ```typescript // Use streaming in Node.js instead of fetching all rows connection.execute({ sqlText: 'SELECT * FROM large_table', streamResult: true, // Don't buffer all rows in memory complete: (err, stmt) => { const stream = stmt.streamRows(); stream.on('data', (row) => processRow(row)); stream.on('end', () => console.log('Done')); }, }); ``` ```python # Use fetchmany() in Python cursor.execute("SELECT * FROM large_table") while True: rows = cursor.fetchmany(10000) if not rows: break process_batch(rows) ``` ### Node.js Driver: Network / Connection Errors ``` Error: connect ECONNREFUSED Error: getaddrinfo ENOTFOUND ``` **Solutions:** ```typescript // Wrong account identifier format // Wrong: 'myaccount.us-east-1.snowflakecomputing.com' // Right: 'myorg-myaccount' // Check for proxy/firewall // Snowflake requires outbound HTTPS to *.snowflakecomputing.com // Enable connection diagnostics snowflake.configure({ logLevel: 'DEBUG' }); ``` ### Python Connector: OperationalError ```python # Common: snowflake.connector.errors.OperationalError # 250001: Could not connect to Snowflake backend # Check connectivity import snowflake.connector snowflake.connector.connect( account='myorg-myaccount', user='test', password='test', login_timeout=10, # Fail fast for testing ) ``` ## Quick Diagnostic Script ```bash #!/bin/bash echo "=== Snowflake Diagnostic ===" echo "Account: ${SNOWFLAKE_ACCOUNT:-NOT SET}" echo "User: ${SNOWFLAKE_USER:-NOT SET}" echo "Password: ${SNOWFLAKE_PASSWORD:+SET (hidden)}" echo "Warehouse: ${SNOWFLAKE_WAREHOUSE:-NOT SET}" echo "" echo "Connectivity test:" curl -s -o /dev/null -w "HTTP %{http_code} in %{time_total}s" \ "https://${SNOWFLAKE_ACCOUNT}.snowflakecomputing.com/session/v1/login-request" || echo "FAILED" echo "" echo "Driver versions:" npm list snowflake-sdk 2>/dev/null || echo "Node.js driver: not installed" pip show snowflake-connector-python 2>/dev/null | grep Version || echo "Python connector: not installed" ``` ## Error Handling | Error Code | Category | Quick Fix | |-----------|----------|-----------| | `002003` | Object not found | Check context, grant access | | `000606` | No warehouse | `USE WAREHOUSE x;` | | `390100` | Auth failure | Check account format, credentials | | `390144` | JWT invalid | Regenerate key pair | | `001003` | SQL syntax | Check reserved words, function syntax | | `100038` | Timeout | Increase timeout or optimize query | | `100035` | Too large | Use streaming or pagination | ## Resources - [Error Messages](https://docs.snowflake.com/en/user-guide/client-connectivity-troubleshooting/error-messages) - [Key Pair Troubleshooting](https://docs.snowflake.com/en/user-guide/key-pair-auth-troubleshooting) - [Connection Troubleshooting](https://docs.snowflake.com/en/user-guide/admin-security-fed-auth-use) ## Next Steps For comprehensive debugging, see `snowflake-debug-bundle`.