Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Mojo & SQLite, Получаю странную ошибку 
V
    Опции темы
Marlik
Дата 21.5.2015, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Здравствуйте люди. Пытаюсь скрестить Mojo и SQLite, делаю так:

Создаю базу, образец отсюда - http://pragmaticperl.com/issues/06/pragmat...0%B0%D1%85.html

sqlite3 blog.db < blog.sql

Создаю схему:

dbicdump -o dump_directory=./lib -o components='["InflateColumn::DateTime"]' Schema dbi:SQLite:./dump/blog.db

Проверил, всё физически имеется и база и схема.

В MyApp:

use Schema;
has schema => sub {
  return Schema->connect('dbi:SQLite:' . ($ENV{BLOG_DB} || './dump/blog.db'));
};

В startup:

$self->helper(db => sub { $self->app->schema });

Пытаюсь инсёртить в базу из контроллера:

    my $self = shift;

    my ($title, $body, $tags) = @{$self->req->params->to_hash}{ 'title', 'body', 'tags' };

    my $result = $self->db->resultset('Post')->create({
    title => '$title',
    post  => '$body',
    tags => '$tags'
    });

Получаю ошибку что таблицы posts нету. Но она присутствует!

DBIx::Class::Storage::DBI::_prepare_sth(): DBI Exception: DBD::SQLite:smileb prepare_cached failed:
no such table: posts [for Statement "INSERT INTO posts ( post, tags, title) VALUES ( ?, ?, ? )"] at /var/www/myapp/script/../lib/MyApp/Controller/Blog.pm line 23


 Подскажите куда двигаться? Спасибо. 


PM WWW Skype   Вверх
tzirechnoy
Дата 21.5.2015, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Цитата
 Но она присутствует!


Почему Вы так думаете?
PM MAIL   Вверх
Marlik
Дата 21.5.2015, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Цитата(tzirechnoy @ 21.5.2015,  20:19)
 
Цитата
Но она присутствует!


Почему Вы так думаете?








Потому что есть дамп blog.sql, вот он:

CREATE TABLE authors (
    authorid    INTEGER PRIMARY KEY AUTOINCREMENT,
    author      VARCHAR(255) UNIQUE,
    pass    VARCHAR(255),
    type    INTEGER
);

CREATE TABLE posts (
    postid      INTEGER PRIMARY KEY AUTOINCREMENT,
    title    TEXT,
    post        TEXT,
    tags    TEXT,
    postime     DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    authorid    REFERENCES authors(authorid)
);

CREATE TABLE comments (
    commentid   INTEGER PRIMARY KEY AUTOINCREMENT,
    comment     TEXT,
    comtime     DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    authorid    REFERENCES authors(authorid),
    postid      REFERENCES posts(postid)
);

Потом командой sqlite3 blog.db < blog.sql создаю базу, я её вижу, могу открыть и посмотреть... как-то так. Спасибо.



PM WWW Skype   Вверх
noize
Дата 22.5.2015, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: нет
Всего: 3



Напишите структуру вашего проекта, где лежит файл .db, где лежат перловые модули. Работать с относительными директориями - плохая практика, не факт, что у моджо где-то внутри не вызывается команда chdir
PM MAIL   Вверх
Marlik
Дата 22.5.2015, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Структура моджо стандартная, где лежит дамп и куда поставилась Shema видно выше в посте. 
PM WWW Skype   Вверх
noize
Дата 23.5.2015, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: нет
Всего: 3



если папка dump лежит в корневой директории моджо-проекта, т.е. на одном уровне с папками lib, public, template и т.д., то абсолютный путь к файлу .db можно получить вот так:
Код

my $db_file = $self->home->rel_file( 'dump/blog.db' );
chomp $db_file;

и уже дальше использовать его в подключении к бд:
Код

use Schema;
has schema => sub {
    return Schema->connect( 'dbi:SQLite:' . $db_file );
};

PM MAIL   Вверх
Marlik
Дата 24.5.2015, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Фишка вся в том, что, когда я меняю путь к базе, выскакивает ошибка, что мол базы нет. Открывал вручную базу в sqlite3 нормально видит базу, показывает структуру. Попробую ещё раз с нуля. И да, у вас ошибка. 

Это сообщение отредактировал(а) Marlik - 24.5.2015, 12:15
PM WWW Skype   Вверх
Marlik
Дата 25.5.2015, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Проблема из-за того что я всё делал из под рута. Век живи, век учись.

Это сообщение отредактировал(а) Marlik - 26.5.2015, 16:07
PM WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1199 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.