ФорумРазработкаБазы данных → pre-install configuration

pre-install configuration

  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 19 апреля 2010 г. 12:23

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

    DROP TABLE IF EXISTS `{prefix}users`;
    CREATE TABLE `{prefix}users` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `login` varchar(50) default NULL,
    `mail` varchar(100) NOT NULL,
    `passhash` char(32) NOT NULL,
    `salt` char(3) NOT NULL,
    `date` datetime NOT NULL,
    `need_permissions` tinyint(1) unsigned NOT NULL default '0',
    `is_admin` tinyint(1) unsigned NOT NULL default '0',
    `is_active` tinyint(1) unsigned NOT NULL default '0',
    PRIMARY KEY (`id`),
    UNIQUE KEY `mail` (`mail`),
    UNIQUE KEY `name` (`login`)
    ) ENGINE=MyISAM DEFAULT CHARSET={charset} AUTO_INCREMENT=1;

    DROP TABLE IF EXISTS `{prefix}users_actions`;
    CREATE TABLE `{prefix}users_actions` (
    `user_id` int(10) unsigned NOT NULL,
    `hash` char(32) NOT NULL,
    `action_type` tinyint(1) NOT NULL,
    `data` text NOT NULL,
    `date` datetime NOT NULL,
    PRIMARY KEY (`user_id`,`action_type`),
    KEY `hash` (`hash`)
    ) ENGINE=MyISAM DEFAULT CHARSET={charset};


    хочу в начало этого скрипта вынести что-то типа
    SET {charset} = cp1251;
    SET {prefix} = 'tt_';

    что бы можно было в одном месте подправить конфиг и импортировать через pma или что-то еще. Как бы так сделать?
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 19 апреля 2010 г. 16:30, спустя 4 часа 6 минут 44 секунды


    $sql=$db->query("select * from lc_settings where id=1");
    if(mysql_num_rows($sql)!=1){$sql_dump=file_get_contents('../sql.sql');foreach(explode(";",$sql_dump) as $v){mysql_query($v);}}

    не ?
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 19 апреля 2010 г. 23:34, спустя 7 часов 4 минуты 37 секунд

    <?php
    $charset = 'cp1251'; // простигоспади…
    $prefix = 'tt_';
    ?>
    DROP TABLE IF EXISTS `<?=$prefix;?>users`;

    :)
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 апреля 2010 г. 0:13, спустя 39 минут 1 секунду

    А ты пробовал в начале файла ставить, например:

    SET CHARACTER SET cp1251


    всякие и т.д.?
    adw/0
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 апреля 2010 г. 0:23, спустя 10 минут 2 секунды

    vasa_c, Faster, народ, ну я ж писал:
    импортировать через pma или что-то еще


    Каким образом PMA или майэккюэль воркбенч или sypex dumper схомячат ваш префикс?

    adw0rd, ок спасибо, допустим вопрос с кодировкой таким образом решим. А с префиксом таблиц что?
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 20 апреля 2010 г. 0:27, спустя 3 минуты 25 секунд

    Абырвалг, а нахуя импортирова через PMA?
    все умрут, а я изумруд
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 апреля 2010 г. 0:34, спустя 6 минут 56 секунд

    ну у системы нет инсталлятора. Та и вдруг что-то пойдет не так и нужно будет использовать pma/sypex dumper

    не знаю че ответить, я всегда так делаю)
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 20 апреля 2010 г. 0:37, спустя 2 минуты 58 секунд

    Абырвалг, ну пусть скрипт и подготавливает SQL дамп
    все умрут, а я изумруд
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 апреля 2010 г. 0:43, спустя 6 минут 41 секунду

    я думаю, что можно изъебнуться и сделать через execute http://dev.mysql.com/doc/refman/4.1/en/sql-syntax-prepared-statements.html, благо он в 3.23 уже появился.

    Ну, самому экспериментировать лень, думал может кто-то уже сталкивался с таким
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 апреля 2010 г. 1:13, спустя 29 минут 35 секунд


    adw0rd, ок спасибо, допустим вопрос с кодировкой таким образом решим. А с префиксом таблиц что?



    set @prefix = 'tt_';


    Создать sql-переменную, не?
    adw/0
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 апреля 2010 г. 1:23, спустя 10 минут 20 секунд

    как мне ее заюзать потом при создании таблиц?

    В простом INSERT'е все ясно
    $this->db->multiQuery("
    SET @sorder =(SELECT MAX(sorder) FROM :$t WHERE pid=?i)+1;
    SET @sorder = IF(@sorder > 0, @sorder, 1);
    INSERT INTO :$t SET [email protected], [email protected]", $parentId, $data);

    а при создании наверно нужно будет делать execute или что-то в этом роде
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 20 апреля 2010 г. 12:51, спустя 11 часов 27 минут 57 секунд

    а если exec('mysqldump') или как там… или это бред?
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 апреля 2010 г. 13:22, спустя 31 минуту 13 секунд

    kostyl, я не могу из pma запустить exec

Пожалуйста, авторизуйтесь, чтобы написать комментарий!