Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm tất cả các cột số nguyên đang đạt đến giới hạn của nó bằng cách sử dụng information_schema

Tôi đã viết một giải pháp cho nhiệm vụ này, nhưng tôi hầu như không phải là người duy nhất đã làm được điều gì đó như thế này.

select concat('`', table_schema, '`.`', table_name, '`.`', column_name, '`') as `column`,
  auto_increment as `current_int`, max_int, round((auto_increment/max_int)*100, 2) as `pct_max`
from (select table_schema, table_name, column_name, auto_increment,
  pow(2, case data_type
    when 'tinyint'   then 7
    when 'smallint'  then 15
    when 'mediumint' then 23
    when 'int'       then 31
    when 'bigint'    then 63
    end+(column_type like '% unsigned'))-1 as max_int
  from information_schema.tables t
  join information_schema.columns c using (table_schema,table_name)
  join information_schema.key_column_usage k using (table_schema,table_name,column_name)
  where t.table_schema in ('test')
    and k.constraint_name = 'PRIMARY'
    and k.ordinal_position = 1
    and t.auto_increment is not null
) as dt;

https://github.com/billkarwin/bk -tools / blob / master / pk-full-ratio.sql

Truy vấn đó được mã hóa cứng cho test giản đồ, vì vậy bạn cần chỉnh sửa nó cho lược đồ của riêng mình.

Câu trả lời ngắn gọn cho câu hỏi "khóa chính của tôi có bị tràn không?" là chỉ cần thay đổi nó thành BIGINT UNSIGNED bây giờ. Điều đó chắc chắn sẽ kéo dài cho đến khi nền văn minh sụp đổ.

Trong cùng một repo git, tôi có một tập lệnh tương tự khác để kiểm tra tất cả cột số nguyên, không chỉ là khóa chính tự động tăng. Nhưng nó không phải là mối quan tâm nhiều đối với các cột khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các trường thập phân MySQL được trả về dưới dạng chuỗi trong PHP

  2. MySQL có thể kiểm tra tệp đó tồn tại không?

  3. Lỗi cập nhật bản ghi Vb6

  4. không thể kết nối với cơ sở dữ liệu MySQL bằng địa chỉ ip bên ngoài

  5. Cảnh báo:mysqli_query ():Không thể tìm nạp mysqli