mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Merge pull request #3833 from kennyj/fix_3678-3
Use show create table (fix 3678: third time).
This commit is contained in:
@@ -499,9 +499,14 @@ module ActiveRecord
|
||||
|
||||
# Returns a table's primary key and belonging sequence.
|
||||
def pk_and_sequence_for(table)
|
||||
execute_and_free("SHOW INDEX FROM #{quote_table_name(table)} WHERE Key_name = 'PRIMARY'", 'SCHEMA') do |result|
|
||||
keys = each_hash(result).map { |row| row[:Column_name] }
|
||||
keys.length == 1 ? [keys.first, nil] : nil
|
||||
execute_and_free("SHOW CREATE TABLE #{quote_table_name(table)}", 'SCHEMA') do |result|
|
||||
create_table = each_hash(result).first[:"Create Table"]
|
||||
if create_table.to_s =~ /PRIMARY KEY\s+\((.+)\)/
|
||||
keys = $1.split(",").map { |key| key.gsub(/`/, "") }
|
||||
keys.length == 1 ? [keys.first, nil] : nil
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user