|
|
|
| Извиняюсь за неконкретное название темы; лучше не придумал=)
Проблема вот в чем.
Создал с помощь phpMyAdmin дамп БД, сохранил в файл с расширением .sql, после чего попытался создать базу заново с помощью такого кода:
$sql=file_get_contents('CMS.sql');
mysql_query($sql)
or die(mysql_error());
|
В ответ получил вот что:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; -- --------------------------------------------------------
|
Сделал то же самое через phpMyAdmin (там можно указать текстовый файл с дампом) - "Ваш SQL-запрос успешно выполнен"
В чем может быть дело?
PS Сама база существует, ее создавать не надо; создать нужно только таблицы в ней. | |
|
|
|
|
|
|
|
для: Киналь
(27.12.2005 в 19:00)
| | Функция mysql_query() может обрабатывать только один запрос - необходимо разбить дамп на отдельные запросы и выполнить их в цикле. | |
|
|
|
|
|
|
|
для: cheops
(27.12.2005 в 22:01)
| | Ах вот оно что... Спасибо, буду пробовать. | |
|
|
|
|
 5 Кб |
|
|
для: Киналь
(27.12.2005 в 19:00)
| | Нет, проблема не решилась, к сожалению.
Написал вот что:
$sql=file('CMS.txt'); // перешел на txt. чтобы сам файл прочитать/подредактировать проще было
foreach($sql as $sql_string)
{
if (trim($sql_string) != '')
{
echo $sql_string.'<br>';
mysql_query(trim($sql_string))
or die(mysql_error());
}
}
|
На первой же строке собственно команд получаю ошибку:
CREATE TABLE 'articles' (
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
Искренне надеясь на вашу помощь, прикрепляю на всякий случай сам .txt-файл. | |
|
|
|
|
|
|
|
для: Киналь
(28.12.2005 в 16:04)
| | file загружает твой файл в массив ПОСТРОЧНО. А тебе нужно сначала вырезать комментарии (скорее всего - с использованием регулярных выражений), а затем разбить по символу ;(например, функция strtok ) и поместить в массив
Хотя, может комментарии можно и не резать...
<?php
// читаем файл в буфер
$buffer = fread($fp,filesize("sql.txt"));
// разбиваем по символу
$tok = strtok($buffer,";");
// в цикле заносим в массив $sql_arr
while ($tok)
{
$sql_arr[] = $tok;
$tok = strtok(";");
}
// потом читаешь массив в цикле и ... - дальше знаешь :)
?>
|
| |
|
|
|
|
|
|
|
для: denvor
(28.12.2005 в 17:01)
| | А-а, точно! Вот, блин, не сообразил... Ща поправим;-)
Спасибо! | |
|
|
|
|
|
|
|
для: Киналь
(28.12.2005 в 16:04)
| | Решал как-то на форуме такую же проблему: перевод строки с качестве разделителя использовать нельзя, так как он может встречаться в текстовых полях, точку с запятой - тоже.
В итоге, не придумал ничего умнее, чем использовать искуственно созданый разделитель (так как дамп я формирую самостоятельно, то с этим проблем не возникло). Так и живу пока... | |
|
|
|
|
|
|
|
для: Loki
(28.12.2005 в 17:25)
| | Про разделитель: да, вспомнил, что у меня тоже были такие грабли (это я про точку с запятой. тогда здесь разделитель: " ;\n-- " Пойдет? | |
|
|
|
|
|
|
|
для: Киналь
(27.12.2005 в 19:00)
| | Большое всем спасибо, все работает, все прекрасно! Поскольку данных в дампе нет, только структура таблиц, то разделитель";" работает превосходно.
Тема закрыта=) | |
|
|
|