Awiero527

[закрыто] Проблема подключения к БД через Denwer

Рекомендованные сообщения



Не найдено.

12 posts in this topic

При попытке запустить сервер выдает в консоли

 

Спойлер

[MySQL] Error (0): Failed to connect. Access denied for user 'root'@'localhost' (using password: YES).
[MySQL] Error (0): Function: mysql_ping called when not connected to any database. Access denied for user 'root'@'localhost' (using password: YES)


//----------------БАЗА ДАННЫХ-------------------------
#define     MYSQL_HOST      "localhost"
#define     MYSQL_USER      "root"
#define     MYSQL_PASSWORD  ""
#define     MYSQL_BASE      "pleasurerp"
//----------------------------------------------------


OnGameUnit:


public OnGameModeInit()
{
	DisableInteriorEnterExits();
	EnableStuntBonusForAll(0);
	SetGameModeText("Pleasure RP");
	SendRconCommand("hostname "SERVER_NAME"");
	mysql_init();
	mysql_connects();
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

	//============Пикапы===========
	vxodmerya = CreatePickup(1318, 23, 1481.0325,-1772.3140,18.7958,0);
	//=================================
	//==============Машины=============
	CreateVehicle(408, 1760.1957,-1898.3301,13.5626,270.0, 245, 0, 120, 0);
	//=================================
	return 1;
}



stock sendername(playerid)
{
	new novoeimya[MAX_PLAYER_NAME];
	GetPlayerName(playerid, novoeimya, sizeof(novoeimya));
	return novoeimya;
}
stock mysql_connects()
{
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_BASE, MYSQL_PASSWORD);
	switch(mysql_ping())
	{
		case 1: print("??????????? ? ???? ?????? ????????? ??????");
		case -1: print("??????????? ? ???? ?????? ????????? ????????");
	}
}

 


Подмечу,что в павно не так давно,поэтому не сильно в нем разбираюсь  :sad:

Share this post


Link to post
Share on other sites

Версия mysql какая?
Местами Base, Password поменяй попробуй. 
Локалка или хост?

Share this post


Link to post
Share on other sites
1 час назад, keyl1337 сказал:

Версия mysql какая?
Местами Base, Password поменяй попробуй. 
Локалка или хост?

5.1

менял,ничего не изменилось

локалка

Share this post


Link to post
Share on other sites

Попробуй в поле password ввести root.

Share this post


Link to post
Share on other sites
mysql_init() - что это

Share this post


Link to post
Share on other sites

@Awiero527, дайте-ка mysql.inc.

Share this post


Link to post
Share on other sites
В 01.05.2020 в 08:08, povstanec сказал:

Попробуй в поле password ввести root.

Не помогло

 

23 часа назад, SCRIPTMAN сказал:

mysql_init() - что это

Без этой строчки сервер не запускается,а в логах пишет следующее:

[MySQL] Error (0): Function: mysql_connect failed, mysql was not initialized on this handle.

 

 

22 часа назад, odosenok сказал:

@Awiero527, дайте-ка mysql.inc.

Спойлер

/**
 *     SA:MP MySQL v2.1 Functions
 *  (c) Copyright 2011, StrickenKid
 *
 **/

#if defined __mysql_included
	#endinput
#endif

#define __mysql_included
#pragma library mysql

// plugin error id's

#define P_ERROR_NONE                                0
#define P_ERROR_INCPARAMCNT                         1
#define P_ERROR_INCVALUE                            2
#define P_ERROR_MAXCONN                             3
#define P_ERROR_DBNOCONN                            4
#define P_ERROR_NORES                               5
#define P_ERROR_RES                                 6
#define P_ERROR_NOFIELD                             7
#define P_ERROR_NOFIELDDATA                         8
#define P_ERROR_NOROWDATA                           9
#define P_ERROR_CANTALLOC                           10
#define P_ERROR_NOCALLBACK                          11
#define P_ERROR_NOQUERY                             12

// mysql headers defines

#define REFRESH_GRANT								1
#define REFRESH_LOG									2
#define REFRESH_TABLES								4
#define REFRESH_HOSTS								8
#define REFRESH_STATUS								16
#define REFRESH_THREADS								32
#define REFRESH_SLAVE   							64
#define REFRESH_MASTER 							 	128

// mysql error id's

#define CR_ERROR_FIRST  							2000
#define CR_UNKNOWN_ERROR							2000
#define CR_SOCKET_CREATE_ERROR						2001
#define CR_CONNECTION_ERROR							2002
#define CR_CONN_HOST_ERROR							2003
#define CR_IPSOCK_ERROR								2004
#define CR_UNKNOWN_HOST								2005
#define CR_SERVER_GONE_ERROR						2006
#define CR_VERSION_ERROR							2007
#define CR_OUT_OF_MEMORY							2008
#define CR_WRONG_HOST_INFO							2009
#define CR_LOCALHOST_CONNECTION 					2010
#define CR_TCP_CONNECTION							2011
#define CR_SERVER_HANDSHAKE_ERR 					2012
#define CR_SERVER_LOST								2013
#define CR_COMMANDS_OUT_OF_SYNC 					2014
#define CR_NAMEDPIPE_CONNECTION 					2015
#define CR_NAMEDPIPEWAIT_ERROR  					2016
#define CR_NAMEDPIPEOPEN_ERROR  					2017
#define CR_NAMEDPIPESETSTATE_ERROR 					2018
#define CR_CANT_READ_CHARSET						2019
#define CR_NET_PACKET_TOO_LARGE						2020
#define CR_EMBEDDED_CONNECTION						2021
#define CR_PROBE_SLAVE_STATUS   					2022
#define CR_PROBE_SLAVE_HOSTS    					2023
#define CR_PROBE_SLAVE_CONNECT  					2024
#define CR_PROBE_MASTER_CONNECT 					2025
#define CR_SSL_CONNECTION_ERROR 					2026
#define CR_MALFORMED_PACKET     					2027
#define CR_WRONG_LICENSE							2028
#define CR_NULL_POINTER								2029
#define CR_NO_PREPARE_STMT							2030
#define CR_PARAMS_NOT_BOUND							2031
#define CR_DATA_TRUNCATED							2032
#define CR_NO_PARAMETERS_EXISTS 					2033
#define CR_INVALID_PARAMETER_NO 					2034
#define CR_INVALID_BUFFER_USE						2035
#define CR_UNSUPPORTED_PARAM_TYPE 					2036
#define CR_SHARED_MEMORY_CONNECTION             	2037
#define CR_SHARED_MEMORY_CONNECT_REQUEST_ERROR 		2038
#define CR_SHARED_MEMORY_CONNECT_ANSWER_ERROR   	2039
#define CR_SHARED_MEMORY_CONNECT_FILE_MAP_ERROR 	2040
#define CR_SHARED_MEMORY_CONNECT_MAP_ERROR      	2041
#define CR_SHARED_MEMORY_FILE_MAP_ERROR         	2042
#define CR_SHARED_MEMORY_MAP_ERROR              	2043
#define CR_SHARED_MEMORY_EVENT_ERROR     			2044
#define CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR 	2045
#define CR_SHARED_MEMORY_CONNECT_SET_ERROR      	2046
#define CR_CONN_UNKNOW_PROTOCOL 					2047
#define CR_INVALID_CONN_HANDLE						2048
#define CR_SECURE_AUTH                          	2049
#define CR_FETCH_CANCELED                       	2050
#define CR_NO_DATA                              	2051
#define CR_NO_STMT_METADATA                     	2052
#define CR_NO_RESULT_SET                        	2053
#define CR_NOT_IMPLEMENTED                      	2054
#define CR_SERVER_LOST_EXTENDED						2055
#define CR_STMT_CLOSED								2056
#define CR_NEW_STMT_METADATA                    	2057
#define CR_ERROR_LAST                      			2057

// logging types

#define INVALID_MYSQL_ID							(-1)
#define LOG_OFF										(0)
#define LOG_ALL           							(1)
#define LOG_ONLY_ERRORS   							(2)

// function defines

#define mysql_reload(%1) mysql_refresh(REFRESH_GRANT, %1)

// plugin callbacks

forward OnMysqlQueryArray(resultid, extravars[], MySQL:handle);
forward OnMysqlQuery(resultid, spareid, MySQL:handle);
forward OnMysqlError(error[], errorid, MySQL:handle);

// plugin natives

native MySQL:mysql_init(logtype = LOG_ONLY_ERRORS, printerrors = 1);
native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);
native mysql_close(MySQL:handle = (MySQL:0));
native mysql_refresh(options, MySQL:handle = (MySQL:0));
native mysql_select_db(const db[], MySQL:handle = (MySQL:0));
native mysql_query(const query[], resultid = (-1), spareid = (0), MySQL:handle = (MySQL:0));
native mysql_query_array(const query[], resultid = (-1), {Float,_}:extravars[], MySQL:handle = (MySQL:0));
native mysql_store_result(MySQL:handle = (MySQL:0));
native mysql_free_result(MySQL:handle = (MySQL:0));
native mysql_result_stored(MySQL:handle = (MySQL:0));
native mysql_fetch_field(const fieldname[], dest[], MySQL:handle = (MySQL:0));
native mysql_fetch_field_num(fieldnum, dest[], MySQL:handle = (MySQL:0));
native mysql_fetch_row(dest[], const splitter[] = "|", MySQL:handle = (MySQL:0));
native mysql_fetch_row_data(MySQL:handle = (MySQL:0));
native mysql_real_escape_string(const string[], dest[], MySQL:handle = (MySQL:0));
native mysql_num_rows(MySQL:handle = (MySQL:0));
native mysql_num_fields(MySQL:handle = (MySQL:0));
native mysql_affected_rows(MySQL:handle = (MySQL:0));
native mysql_insert_id(MySQL:handle = (MySQL:0));
native mysql_ping(MySQL:handle = (MySQL:0));
native mysql_error(dest[], MySQL:handle = (MySQL:0));
native mysql_errno(MySQL:handle = (MySQL:0));
native mysql_warning_count(MySQL:handle = (MySQL:0));
native mysql_info(dest[], MySQL:handle = (MySQL:0));
native mysql_stat(dest[], MySQL:handle = (MySQL:0));
native mysql_get_server_info(dest[], MySQL:handle = (MySQL:0));
native mysql_get_host_info(dest[], MySQL:handle = (MySQL:0));
native mysql_data_seek(rownum, MySQL:handle = (MySQL:0));
native mysql_set_character_set(const csname[], MySQL:handle = (MySQL:0));
native mysql_get_character_set(csname[], MySQL:handle = (MySQL:0));
native mysql_fetch_int(MySQL:handle = (MySQL:0));
native Float:mysql_fetch_float(MySQL:handle = (MySQL:0));
native mysql_fetch_string(dest[], MySQL:handle = (MySQL:0));

#if !defined split
// split function - thanks to Blacklite
stock split(const strsrc[], strdest[][], delimiter = '|')
{
	new i, li, aNum, len, srclen = strlen(strsrc);
	while(i <= srclen)
	{
		if (strsrc[i] == delimiter || i == srclen)
		{
			len = strmid(strdest[aNum], strsrc, li, i, 128);
			strdest[aNum][len] = 0;
			li = i + 1;
			aNum++;
		}
		i++;
	}
}
#endif

 

 

 

Share this post


Link to post
Share on other sites

@Awiero527, в .inc файле библиотеки перечислены все нативные функции с необходимым порядком аргументов для работы с базой данных. Обратите внимание на аргументы в mysql_connect:

native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);

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

 

Далее, текущая версия базы данных крайне стара. Если у Вас есть возможность, лучше обновитесь до одной из последних: R41. Где скачать библиотеку MySQL?

 

Ну, и если все же не горите желанием обновлять библиотеку, попробуйте сделать подключение так:

Спойлер

// в начало мода
new MySQL:dbHandle;

// в OnGamemodeInit
public OnGamemodeInit() {
	dbHandle = mysql_init();
	mysql_connects();
}

stock mysql_connects() {
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_BASE);
	switch(mysql_ping())
	{
		case 1: print("??????????? ? ???? ?????? ????????? ??????");
		case -1: print("??????????? ? ???? ?????? ????????? ????????");
	}
}

 

 

И на будущее три нюанса:

  • Вместо mysql_ping() лучше использовать специальную функцию mysql_errno, которая возвращает идентификатор ошибки, что позволяет получить больше информации о возникшей проблеме.
  • У каждого языка программирования существует свой стиль обозначения переменных и функций. Например, в Java принято все переменные называть с маленькой буквы, а каждое последующее слово в них с большой: isValid, weather, playerName. А функции - также, с маленькой буквы, каждое последующее слово с большой, но первое слово должно быть глаголом. Ибо функция создана для того, чтобы что-то делать: возвращать (get), изменять (set), удалять (delete), создавать (create), добавлять (add), проверять (is, check). Опять же, на примере Java, getWeather(), getPlayerName(). В Pawn же принято все переменные называть исключительно с маленькой буквы, слова отделять нижними подчеркиваниями, например, is_valid, weather, player_name. Функции: каждое слово с большой буквы, первое - глагол. GetWeather(), GetPlayerName(). К чему я это пишу? Выберите какой-нибудь наиболее удобный для себя вариант из предложенных и следуйте ему. Почему необязательно использовать вариант от Pawn? Потому что так делают лишь в единицах языков. Переучиваться стилю под каждый язык слишком муторно. Поэтому вполне приемлемо использовать стиль кода, взятый из других языков, как сделал я. А что сделали Вы? Переменная подключения: dbHandle, функции: mysql_connects(). Вперемешку да в кашу.
  • Любая функция должна давать Вам полную картину о том, что она делает. Если функция подключается к базе данных (одной!), то и в названии должно быть подключение к одной базе данных: MySQLConnect (или connectMysql). А у Вас по названию подключение к куче баз данных, по факту - к одной: mysql_connects().

Share this post


Link to post
Share on other sites
1 час назад, odosenok сказал:

@Awiero527, в .inc файле библиотеки перечислены все нативные функции с необходимым порядком аргументов для работы с базой данных. Обратите внимание на аргументы в mysql_connect:


native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);

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

 

Далее, текущая версия базы данных крайне стара. Если у Вас есть возможность, лучше обновитесь до одной из последних: R41. Где скачать библиотеку MySQL?

 

Ну, и если все же не горите желанием обновлять библиотеку, попробуйте сделать подключение так:

  Код (открыть спойлер)


// в начало мода
new MySQL:dbHandle;

// в OnGamemodeInit
public OnGamemodeInit() {
	dbHandle = mysql_init();
	mysql_connects();
}

stock mysql_connects() {
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_BASE);
	switch(mysql_ping())
	{
		case 1: print("??????????? ? ???? ?????? ????????? ??????");
		case -1: print("??????????? ? ???? ?????? ????????? ????????");
	}
}

 

 

И на будущее три нюанса:

  • Вместо mysql_ping() лучше использовать специальную функцию mysql_errno, которая возвращает идентификатор ошибки, что позволяет получить больше информации о возникшей проблеме.
  • У каждого языка программирования существует свой стиль обозначения переменных и функций. Например, в Java принято все переменные называть с маленькой буквы, а каждое последующее слово в них с большой: isValid, weather, playerName. А функции - также, с маленькой буквы, каждое последующее слово с большой, но первое слово должно быть глаголом. Ибо функция создана для того, чтобы что-то делать: возвращать (get), изменять (set), удалять (delete), создавать (create), добавлять (add), проверять (is, check). Опять же, на примере Java, getWeather(), getPlayerName(). В Pawn же принято все переменные называть исключительно с маленькой буквы, слова отделять нижними подчеркиваниями, например, is_valid, weather, player_name. Функции: каждое слово с большой буквы, первое - глагол. GetWeather(), GetPlayerName(). К чему я это пишу? Выберите какой-нибудь наиболее удобный для себя вариант из предложенных и следуйте ему. Почему необязательно использовать вариант от Pawn? Потому что так делают лишь в единицах языков. Переучиваться стилю под каждый язык слишком муторно. Поэтому вполне приемлемо использовать стиль кода, взятый из других языков, как сделал я. А что сделали Вы? Переменная подключения: dbHandle, функции: mysql_connects(). Вперемешку да в кашу.
  • Любая функция должна давать Вам полную картину о том, что она делает. Если функция подключается к базе данных (одной!), то и в названии должно быть подключение к одной базе данных: MySQLConnect (или connectMysql). А у Вас по названию подключение к куче баз данных, по факту - к одной: mysql_connects().

Господи,наконец-то.Огромное спасибо!Пытался исправить ошибку уже около недели.

Share this post


Link to post
Share on other sites
В 28.04.2020 в 20:36, keyl1337 сказал:

Местами Base, Password поменяй попробуй. 

@Awiero527 вам в первом сообщении в этой теме написали про поменять местами, Вы ответили, что не помогло...

Share this post


Link to post
Share on other sites
26 минут назад, DEST сказал:

@Awiero527 вам в первом сообщении в этой теме написали про поменять местами, Вы ответили, что не помогло...

Помогла именно переустановка MySQL на новую (хотя я ставил различные версии).А переустановка местами значений мне не помогла

1 час назад, odosenok сказал:

@Awiero527, в .inc файле библиотеки перечислены все нативные функции с необходимым порядком аргументов для работы с базой данных. Обратите внимание на аргументы в mysql_connect:


native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);

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

 

Далее, текущая версия базы данных крайне стара. Если у Вас есть возможность, лучше обновитесь до одной из последних: R41. Где скачать библиотеку MySQL?

 

Ну, и если все же не горите желанием обновлять библиотеку, попробуйте сделать подключение так:

  Код (открыть спойлер)


// в начало мода
new MySQL:dbHandle;

// в OnGamemodeInit
public OnGamemodeInit() {
	dbHandle = mysql_init();
	mysql_connects();
}

stock mysql_connects() {
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_BASE);
	switch(mysql_ping())
	{
		case 1: print("??????????? ? ???? ?????? ????????? ??????");
		case -1: print("??????????? ? ???? ?????? ????????? ????????");
	}
}

 

 

И на будущее три нюанса:

  • Вместо mysql_ping() лучше использовать специальную функцию mysql_errno, которая возвращает идентификатор ошибки, что позволяет получить больше информации о возникшей проблеме.
  • У каждого языка программирования существует свой стиль обозначения переменных и функций. Например, в Java принято все переменные называть с маленькой буквы, а каждое последующее слово в них с большой: isValid, weather, playerName. А функции - также, с маленькой буквы, каждое последующее слово с большой, но первое слово должно быть глаголом. Ибо функция создана для того, чтобы что-то делать: возвращать (get), изменять (set), удалять (delete), создавать (create), добавлять (add), проверять (is, check). Опять же, на примере Java, getWeather(), getPlayerName(). В Pawn же принято все переменные называть исключительно с маленькой буквы, слова отделять нижними подчеркиваниями, например, is_valid, weather, player_name. Функции: каждое слово с большой буквы, первое - глагол. GetWeather(), GetPlayerName(). К чему я это пишу? Выберите какой-нибудь наиболее удобный для себя вариант из предложенных и следуйте ему. Почему необязательно использовать вариант от Pawn? Потому что так делают лишь в единицах языков. Переучиваться стилю под каждый язык слишком муторно. Поэтому вполне приемлемо использовать стиль кода, взятый из других языков, как сделал я. А что сделали Вы? Переменная подключения: dbHandle, функции: mysql_connects(). Вперемешку да в кашу.
  • Любая функция должна давать Вам полную картину о том, что она делает. Если функция подключается к базе данных (одной!), то и в названии должно быть подключение к одной базе данных: MySQLConnect (или connectMysql). А у Вас по названию подключение к куче баз данных, по факту - к одной: mysql_connects().

Кстати.По поводу mysql_connects().Исправил на mysq_connect(),и получил 5 ошибок

Share this post


Link to post
Share on other sites

@Awiero527, потому что функция mysql_connect уже есть и Вы ее используете для подключения к базе данных. Назовите функцию, например, MySQLConnect или ConnectMySQL, либо connectMySQL.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • warrion4ik
      By warrion4ik
      При телепорте по метке она тепает под текстуры и приходится перетелепортироваться, как это можно исправить?
      Видео: https://youtu.be/FLjer8lfGc0