![]() |
|
|
![]()
|
|
| becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Добрый день. Есть MYSQL база данных, в нее идет запись из нескольких потоков. Вот основная функция записи каждого потока:
Запись обычный INSERT INTO. Запускаю несколько потоков с укладкой (укладка производится довольно быстро, данных немного), получаю: open error «Unknown MySQL server host '127.0.0.1' (0) QMYSQL: Unable to connect open error „Unknown MySQL server host '127.0.0.1' (0) QMYSQL: Unable to connect Количество таких сообщений обычно на 1 или 2 меньше количества потоков. Если запускать один поток, все работает нормально. Для других задач (не SQL) работает хоть с 10-20 потоками нормально. Win 7 64. Qt 5.1.1 MSVC2012 64. MYSQL 5.6.14.0. Таблицы — InnoDB |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
becks, может у бд есть ограничение на количество одновременных подключений?
|
|||
|
||||
| becks |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Проверил, везде стоит значение 0 - т.е. нет никаких ограничений по коннектам из документации. Создал, на всякий случай другого пользователя, до этого пробовал все на администраторе. Результат тот же.
Если поможет номер ошибки 2005. Чего уже только не испробовал, ничего не выходит. |
||||
|
|||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 3 Всего: 56 |
mysql консольный тул соединяется с базой нормально? При тех же параметрах
Почему грешишь на потоки? Не вижу в описании ничего потокозависимого. Попробуй создай пустой проект и присоединись к базе из него. |
|||
|
||||
| becks |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Абсолютно нормально.
Если писать одним потоком - все работает отлично. Как только поялвляется хотя бы второй, появляются ошибки.
С этого все и начал. Работало. Потом перенес все это на потоки. И тут возникли проблемы. Это сообщение отредактировал(а) becks - 23.10.2013, 23:55 |
||||||
|
|||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 3 Всего: 56 |
Я так понимаю, что эта функция(insert) у тебя вызывается не один раз, а значит эта строчка не должна быть здесь. Здесь должна быть database(m_uid);, а инициализация базы для потока должна быть в едином месте. Так же проверь являются ли m_uid уникальными для каждого потока и удостоверься, что QSqlDatabase::addDatabase("QMYSQL", m_uid); происходит в отдельном потоке. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |