Создание 2х таблиц в одном запросе. Вроде всё правильно, но MySQL так не считает...

NemesiS

Новичок
Создание 2х таблиц в одном запросе. Вроде всё правильно, но MySQL так не считает...

Вот запрос:
PHP:
CREATE TABLE `uri8y_ban_list`
( 
	`ban_id` mediumint(8) UNSIGNED NOT NULL auto_increment,
	`ban_type` VARCHAR(15) NOT NULL DEFAULT '',
	`ban_value` VARCHAR(15) NOT NULL DEFAULT '',
	`ban_reason` TEXT NOT NULL,
	PRIMARY KEY (`ban_id`)
);

CREATE TABLE `uri8y_blocks`
(
	`block_id` mediumint(8) UNSIGNED NOT NULL auto_increment,
	`block_position` VARCHAR(50) NOT NULL DEFAULT '',
	`block_title` VARCHAR(100) NOT NULL DEFAULT '',
	`block_show_title` BOOL,
	`block_type` VARCHAR(4) NOT NULL DEFAULT '',
	`block_content` LONGTEXT NOT NULL,
	`block_access` TINYINT(4) NOT NULL,
	`block_groups` LONGTEXT NOT NULL,
	`block_enabled` BOOL,
	`block_expire` BOOL,
	`block_expire_date` INT(11) NOT NULL,
	`block_expire_action` BOOL,
	PRIMARY KEY (`block_id`)
);
MySQL ругается на синтаксическую ошибку:
MySQL returned: 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 '; CREATE TABLE `uri8y_blocks` ( `block_id` medium
Если создавать таблицы по одной, то всё впорядке, а вместе....
Что я делаю не так?
 

NemesiS

Новичок
Ну немного не так сказал, но суть-то от этого не меняется...
Есть 2 запроса. Но если их выполнить вместе, то MySQL ругается. Возможности выполнить их отдельно друг от друга нет.
Фанат, такая формулировка вопроса устраивает?
 

Фанат

oncle terrible
Команда форума
нет. не устраивает.
ты даёшь не информацию, а какие-то огрызки.
и в той формулировке, в которой ты тут это пишешь, ответ будет однозначный: я только что выполнил их вместе - мускуль мне ни слова не сказал.

а телепатией заниматься и писать вопрос за тебя я не собираюсь.

-~{}~ 12.01.07 14:46:

Возможности выполнить их отдельно друг от друга нет.
За что люблю этот форум - так вот за то, что по сравнению со здешними посетителями тётя Валя из "В гостях у сказки" отдыхает, да.
 

NemesiS

Новичок
Я даю не огрызки, а то, что мне вернул sql-класс
PHP:
// SQL класс
class sql
{
...
// вот функция запроса:

function query($query = '')
{
  if($result = @mysql_query($query) return $result;
  else 
  {
    echo "Query fail. MySQL return: ".mysql_error();
   // ...
   // запись в лог
   // ...
   return false;
  }
}
...
}
// вот то, что я пытаюсь выполнить:
$sql->query("оба запроса"); // ругается, что не могу использовать ; CREATE TABLE `uri8y_blocks` ( `block_id` medium, типа читай документацию
echo "<hr>";
$sql->query("первый запрос"); // выполняет
echo "<hr>";
$sql->query("второй запрос"); // выполняет
Не могу использовать запросы по отдельности, т.к. это фрагмент установщика cmsки и запросы вынесены в отдельный файл:
PHP:
CREATE TABLE `{prefix}ban_list`
( 
	`ban_id` mediumint(8) UNSIGNED NOT NULL auto_increment,
	`ban_type` VARCHAR(15) NOT NULL DEFAULT '',
	`ban_value` VARCHAR(15) NOT NULL DEFAULT '',
	`ban_reason` TEXT NOT NULL,
	PRIMARY KEY (`ban_id`)
);

CREATE TABLE `{prefix}blocks`
(
	`block_id` mediumint(8) UNSIGNED NOT NULL auto_increment,
	`block_position` VARCHAR(50) NOT NULL DEFAULT '',
	`block_title` VARCHAR(100) NOT NULL DEFAULT '',
	`block_show_title` BOOL,
	`block_type` VARCHAR(4) NOT NULL DEFAULT '',
	`block_content` LONGTEXT NOT NULL,
	`block_access` TINYINT(4) NOT NULL,
	`block_groups` LONGTEXT NOT NULL,
	`block_enabled` BOOL,
	`block_expire` BOOL,
	`block_expire_date` INT(11) NOT NULL,
	`block_expire_action` BOOL,
	PRIMARY KEY (`block_id`)
);
 

Фанат

oncle terrible
Команда форума
хе-хе. словами всё равно не получилось. Ну, хоть на пальцах =)
придётся переделывать установщик.

-~{}~ 12.01.07 14:53:

что мне вернул sql-класс
об этом и речь.
про твой класс мы должны догадываться сами, да?
 

NemesiS

Новичок
А на что может повлиять
PHP:
function query($query = '') 
{ 
  if($result = @mysql_query($query) return $result; 
  else  
  { 
    echo "Query fail. MySQL return: ".mysql_error(); 
   // ... 
   // запись в лог 
   // ... 
   return false; 
  } 
}
Или я не прав?
 

Фанат

oncle terrible
Команда форума
Это потому, что находишь во мне родственную душу. По лаконичности.
 

Фанат

oncle terrible
Команда форума
ты правда веришь, что мускуль не может выполнить два запроса за раз?
ты хочешь сказать, что никогда в жизни не видел дампа mysql?
 

NemesiS

Новичок
Нет, конечно, просто не могу понять в чём беда.
phpmyadmin - эти запросы выполняет, только он вроде разбивает их на несколько, просто mysql_query() - нет.
Я, получив сообщение об ошибке, офигел...

Запросы-то верные! ... ?
Что ей (MySQL) нужно..
 

Фанат

oncle terrible
Команда форума
при чём. здесь. MySQL?!

-~{}~ 12.01.07 15:31:

вот я не понимаю. вроде, сначала человек пишет всё верно.
и про несколько запросов. и про то, что мухадмин их р а з б и в а е т.
и тут же - фразу, которая противоречит всему вышесказанному. не понимаю.
 

phprus

Moderator
Команда форума
NemesiS
phpmyadmin - эти запросы выполняет, только он вроде разбивает их на несколько, просто mysql_query() - нет.
Ты тоже делай как phpmyadmin и все будет работать.
 

baev

‹°°¬•
Команда форума
Please note the sql statements are terminated with ;; not a ;
— нафига тут такое постить в отрыве от контекста?
PHP:
   $tok = strtok($q, ";;\n");
   while ($tok)
       {
       $results=mysql_query("$tok",$link);
       $tok = strtok(";;\n");
       }
У топикстартера и так проблемы с пониманием того, что такое запрос к MySQL, а Вы его ещё больше запутываете...
 

WP

^_^
PHP:
    function sqlrestore_query_callback($m)
    {
     global $sql;
     $sql->query($m[0]);
     return '';
    }
    $data = '';
    $fp = fopen($path,'r');
    while ($fp and !feof($fp))
    {
     $data .= fread($fp,4096).(!feof($fp)?fgets($fp):'');
     $data = preg_replace('~^\s*--.*$~mS','',$data);
     $data = preg_replace('~^\s*$~m','',$data);
     $data = preg_replace_callback('~^(?!$).*?;$(?=[\r\n]|\z)~ms','sqlrestore_query_callback',$data);
    }
;) Это я написал в своем дампере (в функции восстановления БД из бекапа).

-~{}~ 12.01.07 21:20:

з.ы. у того чела с dklab лольная функция, в памяти одновременно весь дамп, а он может быть 500 мб ;)
 
Сверху