I guess the WordPress setting “Automatically close comments on articles older than x days” does close pingbacks as well. I certainly wasn’t getting any of the internal ones I sent. I recently closed comments on this blog but wanted to keep pingbacks open. So, I’ve changed the comment_status in the database to closed, set the ping_status to open, and unchecked the “Automatically close” box.

To see what ping and comment statuses your posts have, you can run:

select comment_status, post_type, count(*) from prefix_posts group by comment_status, post_type;
select ping_status, post_type, count(*) from prefix_posts group by ping_status, post_type;

To close comments on everything, you can run:

update prefix_posts set comment_status = 'closed' where comment_status = 'open';

and to open pingbacks on posts and attachments:

update prefix_posts set ping_status = 'open' where post_type IN('attachment', 'post') and ping_status = 'closed';