Не создается таблица в БД (hook_schema) [РЕШЕНО]

Главные вкладки

Аватар пользователя chudomozg chudomozg 14 марта 2011 в 6:03

Здравствуйте товарищи знатоки.

Собственно сабж:

Написал вот такое вот первое творение, вроде все по API да по правилам.
Да вот при установке попадаю на пустую страницу http://mysite.ru/admin/build/modules/list/confirm
и все.
Таблица в БД не создается, запись тем более не добавляется.
Если после "установки" перейти на http://mysite.ru/admin/build/modules/list/
То модуль "как бы установлен".
Что не так?

собственно код

sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.info

; $Id$
name = JC to DVtrade import
description = "Модуль для импорта из БД JapanCar"
package = "DVtrade"
core = 6.x

sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.install

<?php
//; $Id$
/**
 * Реализация hook_schema()
 */

function jc_to_dvtrade_import_schema()
{
        $schema['jc_to_dvtrade_import_jcsetup'] = array(
        'fields' => array(
            'parameter' => array(
                'description' => 'Название опции',
                'type' => 'varchar',
                'length' => 100,
                'not null' => true,
            ),
            'value' => array(
                'description' => 'Значение опции',
                'type' => 'int',
                'not null' => true,
            ),
        ),
        'primary key' => array('parameter'),
    );
 
    return $schema;
}
/**
 * Реализация hook_install()
 */

function jc_to_dvtrade_import_install()
{
    drupal_install_schema('jc_to_dvtrade_import_jcsetup');
        db_query("insert into {jc_to_dvtrade_import_jcsetup} (parameter, value) values (%s, %d)", "autoupdate", 1);
}

/**
 * Реализация hook_uninstall()
 */

 
function jc_to_dvtrade_import_uninstall()
{
    drupal_uninstall_schema('jc_to_dvtrade_import_jcsetup');
}
 
 

sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.module

<?php
//;  $Id$

в логах вот такая вот ошибка.

Подробности
Тип  php
Дата        Понедельник, Март 14, 2011 - 13:54
Местоположение    http://mysite.ru/admin/build/modules/list/confirm
Источник отсылки http://mysite.ru/admin/build/modules/list
Сообщение      Cannot modify header information - headers already sent by (output started at Z:\home\mysite.ru\www\sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.module:1) в файле Z:\home\mysite.ru\www\includes\common.inc в строке 345.
Важность        ошибка
Имя хоста       127.0.0.1
Действия

Комментарии

Аватар пользователя chudomozg chudomozg 14 марта 2011 в 7:22

в логах вот такая вот ошибка.

Подробности
Тип  php
Дата        Понедельник, Март 14, 2011 - 13:54
Местоположение    http://mysite.ru/admin/build/modules/list/confirm
Источник отсылки http://mysite.ru/admin/build/modules/list
Сообщение      Cannot modify header information - headers already sent by (output started at Z:\home\mysite.ru\www\sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.module:1) в файле Z:\home\mysite.ru\www\includes\common.inc в строке 345.
Важность        ошибка
Имя хоста       127.0.0.1

Вот только не пойму почему.

Аватар пользователя void89a void89a 14 марта 2011 в 8:17

кто то пытается отправить header, но так как произошол уже какойто вывод то его отправить нельзя
Вы уверены что ошибка изза вашего модуля?
Можете скинуть сюда свой модуль ?

Аватар пользователя chudomozg chudomozg 14 марта 2011 в 10:44

Спасибо Ch (Файлы были просто в UTF-8, сохранил в UTF-8 без BOM) теперь установка проходит без ошибок - как обычно.

Но вот основную проблему это не решило - Таблица в БД не создается, запись не добавляется.
У меня в синтаксисе все правильно?

Кстати void89a, не совсем понял "Можете скинуть сюда свой модуль"? Я выложил все исходники в посте. в самом файле sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.module
"ничего нет" если вы про это.

Аватар пользователя tonyk tonyk 14 марта 2011 в 10:50

Убедитесь, что перед "<?php" у вас нет поблеов и переводов строк. Превым символом в файле должен быть "меньше".

UPD: ninja'd

Аватар пользователя chudomozg chudomozg 14 марта 2011 в 10:55

"tonyk" wrote:
Убедитесь, что перед "
<?php" у вас нет поблеов и переводов строк. Превым символом в файле должен быть "меньше".

UPD: ninja'd?>


Убедился - все правильно

Аватар пользователя void89a void89a 14 марта 2011 в 11:25

jc_to_dvtrade_import.info

; $Id$
name = JC to DVtrade import
description = "Модуль для импорта из БД JapanCar"
project = "jc_to_dvtrade_import"
package = "DVtrade"
core = 6.x

jc_to_dvtrade_import.install

<?php
//; $Id$
/**
 * Реализация hook_schema()
 */

function jc_to_dvtrade_import_schema()
{
        $schema['jc_to_dvtrade_import_jcsetup'] = array(
                'fields' => array(
                        'parameter' => array(
                                'description' => 'Название опции',
                                'type' => 'varchar',
                                'length' => 100,
                                'not null' => true,
                        ),
                        'value' => array(
                                'description' => 'Значение опции',
                                'type' => 'int',
                                'not null' => true,
                        ),
                ),
                'primary key' => array('parameter'),
        );
       
        return $schema;
}
/**
 * Реализация hook_install()
 */

function jc_to_dvtrade_import_install()
{
        drupal_install_schema('jc_to_dvtrade_import');
        db_query("insert into {jc_to_dvtrade_import_jcsetup} (parameter, value) values (%s, %d)", "autoupdate", 1);
}

/**
 * Реализация hook_uninstall()
 */

function jc_to_dvtrade_import_uninstall()
{
        drupal_uninstall_schema('jc_to_dvtrade_import');
}

теперь таблица создается

Аватар пользователя void89a void89a 14 марта 2011 в 12:14

если вы хитите использовать эту таблицу для хранения настроек модуля то лучше воспользуйтесь variable_set

Аватар пользователя chudomozg chudomozg 14 марта 2011 в 13:07

"void89a" wrote:
теперь таблица создается

Так уверенно сказали. Я аж обрадовался. Но увы не создается. Кстати спасибо - понял ошибку.

"void89a" wrote:
если вы хитите использовать эту таблицу для хранения настроек модуля то лучше воспользуйтесь variable_set

Если не трудно - чем лучше?

Аватар пользователя Ch Ch 14 марта 2011 в 13:27

Тем, что не надо создавать и держать в базе отдельную таблицу для хранения нескольких переменных. Для этого уже есть таблица variable.

Аватар пользователя chudomozg chudomozg 14 марта 2011 в 13:41

"Ch" wrote:
Тем, что не надо создавать и держать в базе отдельную таблицу для хранения нескольких переменных. Для этого уже есть таблица variable.

Ясно - спасибо.

Аватар пользователя chudomozg chudomozg 14 марта 2011 в 14:04

"olk" wrote:

Попробуйте отключить модуль затем его УДАЛИТЬ (закладка Удалить), а потом обратно включить

Вы были правы. Я и забыл, что он считается установленным, а я его просто отключал. Ну простите чайника Smile

Всех люблю Biggrin
Спасибо всем за решение проблемы и оказанное время
void89a, Ch, olk
Особое спасибо