ORLite: Почему я получаю сообщение об ошибке "Не удается найти метод объекта" создать "через пакет..."

Почему я получаю сообщение об ошибке?

#!/usr/bin/env perl
use warnings;
use 5.012;

use ORLite {
    package     => 'My::ORM',
    file        => 'sqlite_test.db',
    create      => sub {
        my $dbh = shift;
        $dbh->do('CREATE TABLE user ( name TEXT NOT NULL, age INTEGER )');
    },
};

say My::ORM::User->table;

my $user = My::ORM::User->create( name => 'Alpha', age  => 23, );

Выход:

user
Can't locate object method "create" via package "My::ORM::User" at ./perl1.pl line 16.

1 ответ

Решение

Вы пытаетесь использовать метод, который доступен только для таблиц, которые имеют ПЕРВИЧНЫЙ КЛЮЧ.

Исправьте запрос на создание, и он будет работать:

$dbh->do('CREATE TABLE user ( name TEXT PRIMARY KEY, age INTEGER )');
#                                       ^^^^^^^^^^^
Другие вопросы по тегам