Skip to content

Commit 8510efa

Browse files
committed
Fix indexes method for non-existing MySQL tables
1 parent 0a9ca01 commit 8510efa

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ def indexes(table_name)
6868

6969
IndexDefinition.new(*index, **options)
7070
end
71+
rescue StatementInvalid => e
72+
if e.message.match?(/Table '.+' doesn't exist/)
73+
[]
74+
else
75+
raise
76+
end
7177
end
7278

7379
def remove_column(table_name, column_name, type = nil, **options)

activerecord/test/cases/adapter_test.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ def test_indexes
9292
@connection.remove_index(:accounts, name: idx_name) rescue nil
9393
end
9494

95+
def test_returns_empty_indexes_for_non_existing_table
96+
assert_equal [], @connection.indexes("nonexistingtable")
97+
end
98+
9599
def test_remove_index_when_name_and_wrong_column_name_specified
96100
index_name = "accounts_idx"
97101

0 commit comments

Comments
 (0)