Having trouble with custom date field for CPT query (WordPress)

I’m guessing it’s because you used order_by when it should actually be orderby – that order_by wasn’t just a typo in the question, right?

And also, if the meta value is a date, then you should also set the meta_type parameter to DATE so that the sorting works as expected.

So try with:

$the_query = new WP_Query( array(
    'post_type'      => 'event',
    'posts_per_page' => 2,
    'orderby'        => 'meta_value', // it's orderby; not order_by
    'meta_key'       => 'start_date',
    'meta_type'      => 'DATE',       // and set meta_type to DATE
) );

Update

If the above still doesn’t work, try using meta_query instead of those meta_key and meta_type, and set the orderby to start_date – the key in the meta_query for the metadata start_date:

$the_query = new WP_Query( array(
    'post_type'      => 'event',
    'posts_per_page' => 2,
    'meta_query'     => array(
        'start_date' => array(
            'key'  => 'start_date',
            'type' => 'DATE',
        ),
    ),
    'orderby'        => 'start_date',
) );

However, if there’s a plugin or custom code overriding the orderby, e.g. via pre_get_posts, then I doubt the above would work.

But you can try it, who knows it magically works… also, try clearing your site caches – just in case.