If still no mysql error, after changing the «or die» position after «mysql_query»..do you get $thread_id from somewhere?? like
$thread_id=$_GET['thread_id'];
Also, if you use, multiple database connections, inside mysql_error(‘$connection_name’))
Like:
//Connect to database
$main = mysql_connect(DB_HST, DB_USR, DB_PSS);
mysql_select_db(DB_DB);
$main2 = mysql_connect(DB_HST2, DB_USR2, DB_PSS2);
mysql_select_db(DB_DB2);
return the error executing the query to the right database..
mysql_query("query") or die (mysql_error($main));
when using multiple database connection the query should look like:
$query = mysql_query("SELECT * FROM table_name WHERE id=1", $connection_name);
mysql_fetch_array($query);
After having some trouble with installing a UDF in MySQL (Cannot install MySQL UDF) I’m facing another issue. When executing the function I get a «Lost connection to MySQL server during query» error (errno 2013). Error logging is enabled, but I can’t see any error messages in the log file. The my.ini configuration file has the following log properties under mysqld:
log-output=FILE
general-log=0
general_log_file="mysql-general-log-file.log"
slow-query-log=1
slow_query_log_file="mysql-slow-query-log-file.log"
long_query_time=10
log="mysql.log"
# Error Logging.
log-error="mysql-error.log"
log-warnings=2
And here is the mysql-error.log output:
140314 21:29:25 [Note] Plugin 'FEDERATED' is disabled.
140314 21:29:25 InnoDB: The InnoDB memory heap is disabled
140314 21:29:25 InnoDB: Mutexes and rw_locks use Windows interlocked functions
140314 21:29:25 InnoDB: Compressed tables use zlib 1.2.3
140314 21:29:25 InnoDB: Initializing buffer pool, size = 307.0M
140314 21:29:25 InnoDB: Completed initialization of buffer pool
140314 21:29:25 InnoDB: highest supported file format is Barracuda.
140314 21:29:26 InnoDB: Waiting for the background threads to start
140314 21:29:27 InnoDB: 5.5.32 started; log sequence number 9975593
140314 21:29:27 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
140314 21:29:27 [Note] - '0.0.0.0' resolves to '0.0.0.0';
140314 21:29:27 [Note] Server socket created on IP: '0.0.0.0'.
140314 21:29:27 [Note] Event Scheduler: Loaded 0 events
140314 21:29:27 [Note] C:/Program Files/MySQL/MySQL Server 5.5/binmysqld: ready for connections.
Version: '5.5.32-log' socket: '' port: 3306 MySQL Community Server (GPL)
I’ve also tried to debug the UDF itself by adding a few print commands to the code, e.g.
fprintf(stderr, "%s", "Launching JVMn");
fflush(stderr);
Unfortunately this didn’t work either. Which other options do I have to track down the issue?
Почему то PHP скрипт не создаёт запись в таблицу MySQL.
Я много раз перепроверял скрипт, «вроде бы» всё правильно, он даже ошибку при выполнении не выводит!
error.log пустой
А когда я выполняю эту же функцию в phpmyadmin, он успешно выполняется
С соединением к MySQL проблем нет, пароль и имя таблицы правильны
▶Скрипт PHP◀
<?php
session_start();
require_once 'connect.php';
$username = $_POST['username'];
$password = hash('haval256,5', $_POST['password']);
$password_confirm = hash('haval256,5', $_POST['password_conf']);
$email = $_POST['email'];
$profile_image = $_FILES['avatar']['tmp_name'];
if($password != $password_confirm){
$_SESSION['message'] = 'Пароли не совпадают!';
header('Location: ../register.php');
}else{
// ok...
}
if($username == "" || $password == ""){
$_SESSION['message'] = 'Заполните все поля!';
header('Location: ../register.php');
}else{
$check_user = mysqli_query($connect, "SELECT * FROM `users` WHERE `username` = '$username'");
if(mysqli_num_rows($check_user) == 1){
$_SESSION['message'] = 'Этот ник уже занят!';
header('Location: ../register.php');
}else{
$rand1 = "avatars/".rand(1000000000, 9999999999).".png";
move_uploaded_file($profile_image, "../".$rand1);
// Проблемный скрипт <<<<<<<<
$create_table = mysqli_query($connect, "INSERT INTO `users`(`id`, `username`, `email`, `password`, `plan`, `banned`, `avatar`, `subscribers`, `status`, `used_plan`) VALUES (NULL, '$username', '$email', '$password', 3, 'no', '$rand1', 0, 'surfer', 3)");
$_SESSION['message'] = 'Регистрация прошла успешно';
}
}
?>
Структура таблицы:
#1 21.02.2011 10:58:41
- simple
- Активист
- Зарегистрирован: 25.11.2010
- Сообщений: 168
Mysql не выводит ошибки
Добрый день народ, я переустановил Mysql, но в клиенте осталась моя старая база с таблицами и процедурами, и теперь когда я добавляю или обновляю в таблице в поле с Unsigned отрицательное число, то сервер ошибку не выводит,раньше ругался на это, просто показывает что изменено о полей и все, ноль эмоций вообщем. Почему так? Что за глюк?
Неактивен
#2 21.02.2011 11:19:04
- rgbeast
- Администратор
- Откуда: Москва
- Зарегистрирован: 21.01.2007
- Сообщений: 3876
Re: Mysql не выводит ошибки
Неактивен
#3 21.02.2011 11:19:59
- deadka
- Администратор
- Зарегистрирован: 14.11.2007
- Сообщений: 2412
Re: Mysql не выводит ошибки
Попробуем по следам http://sqlinfo.ru/forum/viewtopic.php?id=2400
mysql> create table iu (i int unsigned);
Query OK, 0 rows affected (0.00 sec)
mysql> insert iu values (-1);
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from iu;
+——+
| i |
+——+
| 0 |
+——+
1 row in set (0.00 sec)
Как у Вас получается? Приведите таблицу (show create table ИМЯ_ВАШЕЙ_ТАБЛИЦЫ), пример данных, запрос — в-общем последовательнось, как я выше привёл.
Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли…
Неактивен
#4 21.02.2011 11:43:04
- simple
- Активист
- Зарегистрирован: 25.11.2010
- Сообщений: 168
Re: Mysql не выводит ошибки
Всем спасибо. Разобрался. Оказывается ошибка выводиться в окне клиента где дублирются запросы, рыньше просто алертом выходила. ))
Отредактированно simple (21.02.2011 11:45:23)
Неактивен
Всем привет!
Решил оптимизировать работу скрипта по сбору и обработке статистики на сайте. Час бьюсь, но не вижу почему неправильно работает запрос.
И так, есть 3 таблицы:
PHP:
/* в таблицу записываются "сырые" данные о клика по ссылкам */
DROP TABLE IF EXISTS `clicks`;
CREATE TABLE IF NOT EXISTS `clicks` (
`id_url` int(8) unsigned NOT NULL,
`referer` varchar(250) COLLATE latin1_general_ci NOT NULL,
KEY `id_url` (`id_url`),
KEY `referer` (`referer`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
INSERT INTO `clicks` (`id_url`, `referer`) VALUES
(123, 'https://google.ru'),
(123, 'https://google.ru'),
(123, 'https://ya.ru');
/* таблица с уникальными адресами откуда были клики - для экономии места в итоговой таблице храним id, а не полный url*/
DROP TABLE IF EXISTS `referers`;
CREATE TABLE IF NOT EXISTS `referers` (
`referer_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`referer` text COLLATE latin1_general_ci NOT NULL,
PRIMARY KEY (`referer_id`),
UNIQUE KEY `referer` (`referer`(255))
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
INSERT INTO `referers` (`referer_id`, `referer`) VALUES
(1, 'https://google.ru'),
(2, 'https://ya.ru');
/* итоговая таблица со статистикой */
DROP TABLE IF EXISTS `statistics`;
CREATE TABLE IF NOT EXISTS `statistics` (
`id_url` int(8) unsigned NOT NULL,
`referer_id` int(10) unsigned NOT NULL,
`total_clicks` mediumint(8) unsigned NOT NULL,
KEY `id_url` (`id_url`),
KEY `referer_id` (`referer_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
INSERT INTO `statistics` (`id_url`, `referer_id`, `total_clicks`) VALUES
(123, 1, 100);
Сам запрос:
PHP:
/* считаем по какой ссылке, сколько раз кликнули */
SELECT clicks.id_url, count(clicks.referer), referers.referer_id
FROM `clicks`
LEFT JOIN referers ON clicks.referer = referers.referer
LEFT JOIN statistics ON clicks.id_url = statistics.id_url
WHERE statistics.referer_id IS NULL
GROUP BY clicks.id_url, clicks.referer
По моей логике запрос должен вернуть результат «id_url=123, кликов=1, referer_id=2», т.е. информацию о кликах, о которых еще нет данных в таблице statistics. По факту mysql возвращает пустой результат.
Если заменить условие «statistics.referer_id IS NULL» на «referers.referer_id=statistics.referer_id», то запрос работает корректно (id_url=123, кликов=2, referer_id=1).
Ткните меня носом, где моя ошибка?
Спасибо.