На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (6) 1 2 [3] 4 5 ... Последняя » все  ( Перейти к последнему сообщению )  
> Как исправить ошибку: "LNK2019 ссылка на неразрешенный внешний символ"?
    :popcorn:
      Цитата Majestio @
      Цитата DDim1000 @
      Дак, у меня правильная логика программы, или нет?

      Вроде бы и правильная ;) но положа честную руку на горячее сердце - боюсь соврать. С Дазами Банных я обычно работал только средствами Qt. Предлагаю тебе воспользоваться "антисанкциями", выкачать и установить себе SQL-клиент Navicat. А вот уже в нём настрой нужный коннект, "увидь" таблицы, и только потом тестируй свою прогу. А то может случиться ситуация что просто проблемсы с БД. Не ленись - проверь!

      Качнул и установил Navicat, и вот что он говорит при попытки подключиться к БД: "1130 - Host '169...' is not allowed to connect to this MySQL server". То есть, получатся, что, сам сервер не разрешает подключиться?
      Сообщение отредактировано: DDim1000 -
        Цитата DDim1000 @
        То есть, получатся, что, сам сервер не разрешает подключиться?

        Ну да, получается что так. Поработай с настройками сервера, постарайся получить коннект с помощью Navicat. И только после этого возвращайся к кодированию.
          Кстати ... если у тебя проблемсы с MySQL-сервером, а они явно у тебя есть - рекомендую тебе просто ужасно-прекрасную софтину Open Server. Да, сия софтина обычно используется для web-разработок. Тем не менее, в её составе есть полноценные версии MySQL и PostgreSQL, практически готовые сразу после установки. Очень очень рекомендую. Сам пользую уже лет 10, и вааще доволен.
            Цитата DDim1000 @
            1130 - Host '169...' is not allowed to connect to this MySQL server

            1. Смотри есть ли права доступа у данного пользователя на подключение к конкретному хосту или к любому (в таблице mysql.user). Если нет - то дай права через grant all priveleges
            2. Проверь что mysql забинден на нужный интерфейс. Или слушает все. в bind-address = 0.0.0.0
              Цитата sharky72 @
              Цитата DDim1000 @
              У меня возник вопрос: может я вообще делаю ни так? В общем, у меня есть задача: нужно подключиться к базе данных котора находиться на веб-хостинге. Дак, у меня правильная логика программы, или нет?

              В смысле работы с Mysql? Ну да. Создали коннектор. Задали строку соединения и логин/пароль. Вызвали метод соединения, обработали исключение в случае ошибки.
              Только я бы все таки не стал вызывать соединение из конструктора. Можно, но некрасиво из за того что там бросаются исключения в случае ошибок и isConnected() в данном случае не нужен ;)

              P.S. Я до сих пор использую dbForge Studio for MySql 9 (2020) пока она была бесплатной для некоммерческого использования

              Установил локальный сервер, установил Navicat Premium, создал БД. Но мая программа не может подключиться к базе данны, пишет: MySQL Error: Unable to connect to HчЇФи:3306

              Что можно сделать?

              ExpandedWrap disabled
                #include <iostream>
                #include <memory>
                #include <mysql_driver.h>
                #include <mysql_connection.h>
                #include <cppconn/driver.h>
                #include <cppconn/exception.h>
                #include <cppconn/resultset.h>
                #include <cppconn/statement.h>
                #include <cppconn/prepared_statement.h>
                 
                //using namespace std;
                 
                class MySQLConnection {
                private:
                    std::unique_ptr<sql::Connection> connection;
                 
                public:
                    MySQLConnection(const std::string& host, int port,
                        const std::string& user, const std::string& password,
                        const std::string& database) {
                 
                        sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();
                        std::string connectionString = "tcp://" + host + ":" + std::to_string(port);
                 
                        connection.reset(driver->connect(connectionString, user, password));
                        connection->setSchema(database);
                    }
                 
                    void executeQuery(const std::string& query) {
                        std::unique_ptr<sql::Statement> stmt(connection->createStatement());
                        std::unique_ptr<sql::ResultSet> res(stmt->executeQuery(query));
                 
                        while (res->next()) {
                            // Обработка результатов
                            std::cout << "Результат: " << res->getString(1) << std::endl;
                        }
                    }
                 
                    bool isConnected() {
                        return connection.get() != nullptr && !connection->isClosed();
                    }
                };
                 
                int main() {
                    setlocale(LC_ALL, "Russian");
                 
                    try {
                        MySQLConnection db(
                            "locolhost", // host
                            3306,
                            "root", // your_username
                            "", // your_password
                            "school" // your_database
                        );
                 
                        if (db.isConnected()) {
                            std::cout << "Подключение установлено успешно!" << std::endl;
                            db.executeQuery("SELECT VERSION()");
                        }
                 
                    }
                    catch (sql::SQLException& e) {
                        std::cerr << "MySQL Error: " << e.what() << std::endl;
                    }
                 
                    return 0;
                }
                Самое простое попробуйте. Наберите в браузере http://HчЇФи:3306 и посмотрите на ответ. Если сервер работает по этому адресу, тогда вы увидите ошибку в протоколе рукопожатия в браузере, а если нет -- страницу: нет доступа.

                В зависимости от этого и надо будет решать проблему.

                1) Ошибка в браузере есть т.е. сервер работает и отвечает. Тогда надо смотреть на то, чтобы отправляет ему коннектор.
                2) Ошибка в браузере, что нет сервера. Тогда проверяем настройки у mysql. Обычно там стоит строго 127.0.0.1:3306 и к нему не подключиться даже через v6
                  Цитата macomics @
                  Самое простое попробуйте. Наберите в браузере http://HчЇФи:3306 и посмотрите на ответ. Если сервер работает по этому адресу, тогда вы увидите ошибку в протоколе рукопожатия в браузере, а если нет -- страницу: нет доступа.

                  В зависимости от этого и надо будет решать проблему.

                  1) Ошибка в браузере есть т.е. сервер работает и отвечает. Тогда надо смотреть на то, чтобы отправляет ему коннектор.
                  2) Ошибка в браузере, что нет сервера. Тогда проверяем настройки у mysql. Обычно там стоит строго 127.0.0.1:3306 и к нему не подключиться даже через v6

                  Сообщние в браузере:

                  Не удается получить доступ к сайту
                  Проверьте, нет ли опечаток в имени хоста xn--h-ptb9al4f.

                  Если все правильно, воспользуйтесь инструментом "Диагностика сетей Windows".
                  DNS_PROBE_FINISHED_NXDOMAIN
                  Сообщение отредактировано: DDim1000 -
                    А вы все сделали как вам советовали?
                    1. Как сказал Qraizer запустить в релизе
                    2. Как советовал я - поставить отладочную версию mysql сonnector и запустить в дебаге. Ибо похоже дебаг проект и релиз dll у вас не дружат.
                    3. "locolhost" это что-то жутко интересное... ;) Интересно будет узнать что это.

                    ЗЫ. QTешников не спрашивали ;) Они вообще не в зуб ногой в кроме своего фреймворка ;)
                    Сообщение отредактировано: sharky72 -
                      Цитата DDim1000 @
                      Проверьте, нет ли опечаток в имени хоста xn--h-ptb9al4f.

                      Это означает, что по внешнему ip порт не доступен (2 вариант). Значит проверяйте настройки сервера mysql. Скорее всего, к нему можно подключиться строго через 127.0.0.1:3306

                      Добавлено
                      Хотя надо еще попробовать локальный ip компьютера вместо dns
                      Сообщение отредактировано: macomics -
                        Цитата sharky72 @
                        А вы все сделали как вам советовали?
                        1. Как сказал Qraizer запустить в релизе
                        2. Как советовал я - поставить отладочную версию mysql сonnector и запустить в дебаге. Ибо похоже дебаг проект и релиз dll у вас не дружат.
                        3. "locolhost" это что-то жутко интересное... ;) Интересно будет узнать что это.

                        ЗЫ. QTешников не спрашивали ;) Они вообще не в зуб ногой в кроме своего фреймворка ;)

                        Когда я преключаю на Release, сразу появляются куча ошибок.

                        https://disk.yandex.ru/i/JL2VqnRFCuZPYA
                        Сообщение отредактировано: DDim1000 -
                          Цитата macomics @
                          Хотя надо еще попробовать локальный ip компьютера вместо dns
                          К слову: 127.0.0.1 отнюдь не то же самое, что локальный IP.
                            Цитата sharky72 @
                            ЗЫ. QTешников не спрашивали Они вообще не в зуб ногой в кроме своего фреймворка

                            user posted image
                              Цитата Qraizer @
                              К слову: 127.0.0.1 отнюдь не то же самое, что локальный IP.

                              Именно потому, что это разные адреса я про это и сказал. Доступ по dns может отсутствовать из-за недоступности локального ip за роутером. Но вот если и с локальным ip будет тот же ответ, тогда значит, что mysql слушает только 127.0.0.1 (localhost, но только по v4).
                                А вот через Комадную строку все работает.

                                ExpandedWrap disabled
                                  Microsoft Windows [Version 10.0.19045.6332]
                                  (c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
                                   
                                  C:\Windows\system32>D:
                                   
                                  D:\>cd Programming\Servers\xampp\mysql\bin
                                   
                                  D:\Programming\Servers\xampp\mysql\bin>mysql.exe -h localhost --port=3306 -u root --password
                                  Enter password:
                                  Welcome to the MariaDB monitor.  Commands end with ; or \g.
                                  Your MariaDB connection id is 9
                                  Server version: 10.4.32-MariaDB mariadb.org binary distribution
                                   
                                  Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
                                   
                                  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
                                   
                                  MariaDB [(none)]> SELECT NOW();
                                  +---------------------+
                                  | NOW()               |
                                  +---------------------+
                                  | 2025-09-28 20:11:06 |
                                  +---------------------+
                                  1 row in set (0.000 sec)
                                   
                                  MariaDB [(none)]>
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0423 ]   [ 15 queries used ]   [ Generated: 24.10.25, 00:42 GMT ]