Apesar das sintaxes aparentemente estarem corretas, e da tabela ter sido criada, ao tentar executar o insert é retornado bool(false). Até colei essa linha abaixo da string de conexão (conforme orientação do Vinicius para outro colega), e acusa erro no $pdo->exec.
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Não consigo identificar onde pode estar o erro.
Arquivo de conexão (que tb cria a tabela):
<?php
$caminhoBanco = __DIR__ . '/banco.sqlite';
$pdo = new PDO('sqlite:' . $caminhoBanco);
echo $caminhoBanco.PHP_EOL;
var_dump($pdo->exec('CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, birth_date TEXT)'));
Arquivo inserir-aluno.php:
<?php
use Alura\Pdo\Domain\Model\Student;
require_once 'vendor/autoload.php';
$databasePath = __DIR__ . '/banco.sqlite';
$pdo = new PDO('sqlite:' . $databasePath);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$student = new Student(null, 'Elvio Amaral', new \DateTimeImmutable('1991-12-21'));
$sqlInsert = "INSERT INTO student (name, birth_date) VALUES ('{$student->name()}', '{$student->birthDate()->format('Y-m-d')}');";
echo $sqlInsert . PHP_EOL;
var_dump($pdo->exec($sqlInsert));
Retorno do insert:
Obs: mesmo sem o var_dump() no exec retorna o mesmo erro.
Tabela no banco: