Честно говоря совершенно не понял что имеет ввиду ваш хостер. Может ему лучше написать нам напрямую?
2
Не работает БЕКАП
Автор Dimdim, 23 нояб. 2010 18:08
Сообщений в теме: 28
#21
Отправлено 03 Декабрь 2010 - 15:05
#22
Отправлено 06 Декабрь 2010 - 07:45
С помощью некоторых манипуляций хостер помог сделать БЭКАП но возникает ошибка при нажатии на ссылку "Настройка".
Fatal error: Unknown column 'запись' in 'where clause'
SELECT * FROM cb_data47 WHERE status=0 AND ({новая запись} and `f492`='{текущий}') AND r=1
in /pub/home/kemweb10/otli4nik/web2/include/functions_cron.php on line 141
Fatal error: Unknown column 'запись' in 'where clause'
SELECT * FROM cb_data47 WHERE status=0 AND ({новая запись} and `f492`='{текущий}') AND r=1
in /pub/home/kemweb10/otli4nik/web2/include/functions_cron.php on line 141
#23
Отправлено 06 Декабрь 2010 - 10:13
Как я понял вы переустановили программу? А бэкап загружали при установке? Данная ошибка выходит если просто обновить рабочую папку, без загрузки бэкапа (база данных у вас попросту осталась в старом формате)
#24
Отправлено 06 Декабрь 2010 - 10:21
Да, программу установили в другую папку.
Базу данных установили следующим образом:
- установили программу не активируя ее.
- через phpmyadmin стерли все таблицы в базе.
- загрузили в базу бэкап через phpmyadmin
И все заработало, только при нажатии на настройки появляется такая ошибка.
Базу данных установили следующим образом:
- установили программу не активируя ее.
- через phpmyadmin стерли все таблицы в базе.
- загрузили в базу бэкап через phpmyadmin
И все заработало, только при нажатии на настройки появляется такая ошибка.
#25
Отправлено 06 Декабрь 2010 - 10:30
Дак в том и дело что вы по сути ничего не сделали. Вы стерли и затем залили ту же самую базу, что попросту бессмысленно. Бэкап необходим для того чтобы переконвертировать базу из старого формата в новый, а у вас она осталась в прежнем формате, почему у вас и выходят ошибки. Причем для заливки в программу бэкап должен быть формата программы, дамп из phpmyadmin не подойдет.
#26
Отправлено 06 Декабрь 2010 - 11:10
Разработчик (6.12.2010, 10:30) писал:
Дак в том и дело что вы по сути ничего не сделали. Вы стерли и затем залили ту же самую базу, что попросту бессмысленно. Бэкап необходим для того чтобы переконвертировать базу из старого формата в новый, а у вас она осталась в прежнем формате, почему у вас и выходят ошибки. Причем для заливки в программу бэкап должен быть формата программы, дамп из phpmyadmin не подойдет.
Хостер спрашивает:
"Разработчик может предоставить часть кода, которая формирует бекап?"
#27
Отправлено 06 Декабрь 2010 - 11:41
Dimdim (6.12.2010, 11:10) писал:
"Разработчик может предоставить часть кода, которая формирует бекап?"
include "include/config.php"; include "include/mysql_connect.php"; $backup_file = "backup.sql"; // имя файла бэкапа (можно сменить путь) $fd = fopen($backup_file, "w"); fwrite($fd, "-- ' version ".$config['version']." ' -- ' prefix ".$config['table_prefix']." ' --\r\n"); $sqlQuery = "SHOW TABLES"; $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); while ($table = mysql_fetch_array($result)) { if (substr($table[0],0,strlen($config['table_prefix']))==$config['table_prefix']) { $sql = "create table `".$table[0]."` ("; $sqlQuery = "SHOW FIELDS FROM ".$table[0]; $result2 = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); while ($field = mysql_fetch_array($result2)) { $sql.= "`".$field['Field']."` ".$field['Type']; if ($field['Type']=="varchar(255)" or $field['Type']=="text") $sql.= " character set cp1251 collate cp1251_general_ci"; if ($field['Extra']) $sql.= " ".$field['Extra']; $sql.= " NOT NULL, "; if ($field['Key']=="PRI") $sql.= "primary key (`".$field['Field']."`), "; $fields[] = $field; } $sql = substr($sql,0,-2).") engine=myisam DEFAULT CHARSET=utf8 collate=cp1251_general_ci;\r\n"; fwrite($fd, $sql); $sqlQuery = "SELECT * FROM ".$table[0]; $result2 = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); while ($row = mysql_fetch_row($result2)) { $sql = "insert into `".$table[0]."` values ("; foreach ($row as $i=>$value) { if ($value and strpos($fields[$i]['Type'],"blob")!==false) $value = "0x".bin2hex($value); elseif (strpos($fields[$i]['Type'],"int")===false) $value = "'".str_replace(array("'","\\","\r","\n"),array("''","\\\\","\\r","\\n"),$value)."'"; $sql.= $value.", "; } $sql = substr($sql,0,-2).");\r\n"; fwrite($fd, $sql); } unset($fields); } } fclose($fd);
#28
Отправлено 06 Декабрь 2010 - 13:56
Хостер еще написал:
"
Можете задать следующие вопросы программисту:
"Бэкап необходим для того чтобы переконвертировать базу из старого формата в новый" - чем отличаются данные форматы.
"Причем для заливки в программу бэкап должен быть формата программы, дамп из phpmyadmin не подойдет" - опять же почему программа должна обрабатывать именно бекапы в таком виде, в итоге получаем в самой базе на сервере одно и ту же базу что и при заливки через shell и т.п., ведь дампы, сделанные mysql_dump и Вашим скриптом отличаются только внешним видом, а не сутью:
CREATE TABLE `cb_acc_buttons` (
`id` int(11) NOT NULL auto_increment,
`group_id` int(11) NOT NULL,
`button_id` int(11) NOT NULL,
`access` tinyint(1) default NULL,
А часть дампа, который успевает сделать Ваш скрипт:
-- ' version 010805 ' -- ' prefix cb_ ' --
create table `cb_acc_buttons` (`id` int(11) auto_increment NOT NULL, primary key (`id`), `group_id` int(11) NOT NULL, `button_id` int(11) NOT NULL, `access` tinyint(1) NOT NULL) engine=myisam DEFAULT CHARSET=utf8 collate=cp1251_general_ci;
тот же самый набор команд create table и insert. Если я в чем-то не прав, то укажите это. но с примерами и подробно.
"
"
Можете задать следующие вопросы программисту:
"Бэкап необходим для того чтобы переконвертировать базу из старого формата в новый" - чем отличаются данные форматы.
"Причем для заливки в программу бэкап должен быть формата программы, дамп из phpmyadmin не подойдет" - опять же почему программа должна обрабатывать именно бекапы в таком виде, в итоге получаем в самой базе на сервере одно и ту же базу что и при заливки через shell и т.п., ведь дампы, сделанные mysql_dump и Вашим скриптом отличаются только внешним видом, а не сутью:
CREATE TABLE `cb_acc_buttons` (
`id` int(11) NOT NULL auto_increment,
`group_id` int(11) NOT NULL,
`button_id` int(11) NOT NULL,
`access` tinyint(1) default NULL,
А часть дампа, который успевает сделать Ваш скрипт:
-- ' version 010805 ' -- ' prefix cb_ ' --
create table `cb_acc_buttons` (`id` int(11) auto_increment NOT NULL, primary key (`id`), `group_id` int(11) NOT NULL, `button_id` int(11) NOT NULL, `access` tinyint(1) NOT NULL) engine=myisam DEFAULT CHARSET=utf8 collate=cp1251_general_ci;
тот же самый набор команд create table и insert. Если я в чем-то не прав, то укажите это. но с примерами и подробно.
"
#29
Отправлено 06 Декабрь 2010 - 14:08
1. В каждой версии базы данных отличаются своей структурой. Прежде чем использовать старую базу с новой версией, ее необходимо преобразовать.
2. Потому что механизм загрузки бэкапа в программе не позволяет корректно обрабатывать дампы произвольного формата.
2. Потому что механизм загрузки бэкапа в программе не позволяет корректно обрабатывать дампы произвольного формата.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных