Перейти к содержимому


Не работает БЕКАП


Сообщений в теме: 28

#21 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Декабрь 2010 - 15:05

Честно говоря совершенно не понял что имеет ввиду ваш хостер. Может ему лучше написать нам напрямую?

#22 Dimdim

    Активный участник

  • Пользователи
  • PipPipPip
  • 60 сообщений

Отправлено 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

#23 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 06 Декабрь 2010 - 10:13

Как я понял вы переустановили программу? А бэкап загружали при установке? Данная ошибка выходит если просто обновить рабочую папку, без загрузки бэкапа (база данных у вас попросту осталась в старом формате)

#24 Dimdim

    Активный участник

  • Пользователи
  • PipPipPip
  • 60 сообщений

Отправлено 06 Декабрь 2010 - 10:21

Да, программу установили в другую папку.
Базу данных установили следующим образом:
- установили программу не активируя ее.
- через phpmyadmin стерли все таблицы в базе.
- загрузили в базу бэкап через phpmyadmin

И все заработало, только при нажатии на настройки появляется такая ошибка.

#25 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 06 Декабрь 2010 - 10:30

Дак в том и дело что вы по сути ничего не сделали. Вы стерли и затем залили ту же самую базу, что попросту бессмысленно. Бэкап необходим для того чтобы переконвертировать базу из старого формата в новый, а у вас она осталась в прежнем формате, почему у вас и выходят ошибки. Причем для заливки в программу бэкап должен быть формата программы, дамп из phpmyadmin не подойдет.

#26 Dimdim

    Активный участник

  • Пользователи
  • PipPipPip
  • 60 сообщений

Отправлено 06 Декабрь 2010 - 11:10

Просмотр сообщенияРазработчик (6.12.2010, 10:30) писал:

Дак в том и дело что вы по сути ничего не сделали. Вы стерли и затем залили ту же самую базу, что попросту бессмысленно. Бэкап необходим для того чтобы переконвертировать базу из старого формата в новый, а у вас она осталась в прежнем формате, почему у вас и выходят ошибки. Причем для заливки в программу бэкап должен быть формата программы, дамп из phpmyadmin не подойдет.

Хостер спрашивает:
"Разработчик может предоставить часть кода, которая формирует бекап?"

#27 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 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 Dimdim

    Активный участник

  • Пользователи
  • PipPipPip
  • 60 сообщений

Отправлено 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. Если я в чем-то не прав, то укажите это. но с примерами и подробно.
"

#29 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 06 Декабрь 2010 - 14:08

1. В каждой версии базы данных отличаются своей структурой. Прежде чем использовать старую базу с новой версией, ее необходимо преобразовать.

2. Потому что механизм загрузки бэкапа в программе не позволяет корректно обрабатывать дампы произвольного формата.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных