╔════════════════════════════════════════════════════════════════╗ ║ Migration 003: Performance and Tracking Improvements ║ ╚════════════════════════════════════════════════════════════════╝ ℹ️ Skipping (already exists): CREATE INDEX idx_processed_at ON twitter_raw (processed_at, ... ℹ️ Skipping (already exists): CREATE INDEX idx_processed_at ON youtube_raw (processed_at, ... ℹ️ Skipping (already exists): CREATE INDEX idx_processed_at ON instagram_raw (processed_at... ℹ️ Skipping (already exists): CREATE INDEX idx_processed_at ON news_raw (processed_at, cam... ℹ️ Skipping (already exists): CREATE INDEX idx_processed_at ON blogs_raw (processed_at, ca... ℹ️ Skipping (already exists): CREATE INDEX idx_processed_at ON facebook_raw (processed_at,... ℹ️ Skipping (already exists): CREATE INDEX idx_deleted_at ON campaigns_impact (deleted_at)... ℹ️ Skipping (already exists): CREATE INDEX idx_url_sha ON twitter_raw (url_sha)... ℹ️ Skipping (already exists): CREATE INDEX idx_url_sha ON youtube_raw (url_sha)... ℹ️ Skipping (already exists): CREATE INDEX idx_url_sha ON instagram_raw (url_sha)... ℹ️ Skipping (already exists): CREATE INDEX idx_url_sha ON news_raw (url_sha)... ℹ️ Skipping (already exists): CREATE INDEX idx_url_sha ON blogs_raw (url_sha)... ℹ️ Skipping (already exists): CREATE INDEX idx_url_sha ON facebook_raw (url_sha)... ℹ️ Skipping (already exists): CREATE INDEX idx_url_sha ON campaign_articles (url_sha)... ℹ️ Skipping (already exists): CREATE INDEX idx_timeout ON background_jobs (timeout_at, sta... ℹ️ Skipping (already exists): CREATE INDEX idx_timeout ON ai_jobs (timeout_at, status)... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE instagram_raw... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE news_raw... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE blogs_raw... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE facebook_raw... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE campaign_articles... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE campaign_analytics_summary... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE ai_relevancy_results... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE background_jobs... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE ai_jobs... ❌ Error: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Statement: ANALYZE TABLE campaigns_impact... ✅ Migration SQL executed: 17 successful, 10 errors 📝 Updating url_sha for existing rows... ❌ Migration failed: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Stack trace: #0 /var/www/html/impact/run_migration_003.php(79): PDO->prepare() #1 {main}