Arquivo da conexão e criação da tabela:
<?php
$databasePath = __DIR__ . '/banco2.sqlite';
$con = new PDO('sqlite:' . $databasePath);
echo 'Conectado';
$con->exec('CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, birth_date TEXT);');
Arquivo inserir-aluno:
<?php
use Alura\Pdo\Domain\Model\Student;
require 'vendor/autoload.php';
$databasePath = __DIR__ . '/banco2.sqlite';
$con = new PDO('sqlite:' . $databasePath);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$student = new Student(null, 'Lucas Souza', new \DateTimeImmutable('1998-09-22'));
$sqlInsert = "INSERT INTO students (name, birth_date) VALUES ('{$student->name()}', '{$student->birthDate()->format('Y-m-d')}');";
var_dump($con->exec($sqlInsert));
Já vi as outras dúvidas parecidas que foram solucionadas. Consigo ver no PHPStorm que a tabela foi criada no banco de dados sqlite, então o problema não é a criação da tabela.
Daí apliquei a sugestão do professor e inseri o código após a conexão:
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Com esse código, estou recebendo o seguinte erro na linha do $con->exec($sqlInsert)
:
PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in C:\Users\Tonantins\Documents\curso-php\php-pdo-projeto-inicial\inserir-aluno.php:16