Это работает, когда я запускаю его из клиента mysql cli, но не когда я запускаю его через PDO, кто-нибудь знает почему?
source - это команда, которая позволяет вам выполнять список SQL в CLI mysql, , но PDO - это библиотека драйвера базы данных (api), скомпилированная в PHP, оба находятся в другом домене
Сведения об источнике: -
https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html http://dev.mysql.com/doc/refman/5.0/en/batch-mode.html
Вы можете либо: -
exec("/PATH/mysql < $file");
, либо разбить каждую строку SQL (внутрифайл), выполнять по одному каждый в PDO