Faby 20 Posted August 26, 2014 Share Posted August 26, 2014 Hi, this tutorial will solve thist error : http://metin2dev.org/board/topic/2588-40k-db-error-on-startup-sometimes/#entry18151 First of all, the bug happens when the DB tries to set the locale char set, so let's start. Open path_to_your_source/db/src/ClientManager.cpp (in my case /usr/src/mainline_released/Srcs/Sever/db/src and search your country, if you use locale/germany search germany, locale/romania search romania, locale/spain search spain,.. And look for g_stLocale = "latin2";. in my case is latin2 because i use romania, you musn't forgot your charset during the tutorial. Now open main.cpp, and edit: std::string g_stLocale = "euckr"; with your charset, in my case: std::string g_stLocale = "latin2"; Save and exit. Now open, path_to_your_source/libsql/AsyncSQL.cpp ( libsql no libmysql be careful) At line 180 edit: m_stLocale = c_pszLocale; with: m_stLocale = "latin2"; ( in my case latin2, you need to put your charset) And at the end of the file edit: void CAsyncSQL2::SetLocale(const std::string & stLocale) { m_stLocale = stLocale; QueryLocaleSet(); } with: void CAsyncSQL2::SetLocale(const std::string & stLocale) { if(m_stLocale != stLocale) { m_stLocale = stLocale; QueryLocaleSet(); } } Now, compile. In putty or virtualbox put the next commands: cd /path_to_your_source/libsql in my case cd /usr/src/mainline_released/Srcs/Sever/libsql gmake clean gmake After that : cd /path_to_your_source/db/src gmake clean After the clean, open the folder .obj and verify if is empty, if isn't empy, empty it delete all files. After that gmake Now the last step, open navicat connect to your server and on the databases account, common, player, hotbackup and log, right-click->Database properties. Set your character set: latin1, latin2, latin5 And collation: I use general but if you fin your country you can put it. That was all, and sorry for my english. 1 1 16 Link to comment Share on other sites More sharing options...
Traceur3RUN 75 Posted August 26, 2014 Share Posted August 26, 2014 Hi, this tutorial will solve thist error : http://metin2dev.org/board/topic/2588-40k-db-error-on-startup-sometimes/#entry18151 First of all, the bug happens when the DB tries to set the locale char set, so let's start. Open path_to_your_source/db/src/ClientManager.cpp (in my case /usr/src/mainline_released/Srcs/Sever/db/src and search your country, if you use locale/germany search germany, locale/romania search romania, locale/spain search spain,.. And look for g_stLocale = "latin2";. in my case is latin2 because i use romania, you musn't forgot your charset during the tutorial. Now open main.cpp, and edit: std::string g_stLocale = "euckr"; with your charset, in my case: std::string g_stLocale = "latin2"; Save and exit. Now open, path_to_your_source/libsql/AsyncSQL.cpp ( libsql no libmysql be careful) At line 180 edit: m_stLocale = c_pszLocale; with: m_stLocale = "latin2"; ( in my case latin2, you need to put your charset) And at the end of the file edit: void CAsyncSQL2::SetLocale(const std::string & stLocale) { m_stLocale = stLocale; QueryLocaleSet(); } with: if(m_stLocale != stLocale) { m_stLocale = stLocale; QueryLocaleSet(); } Now, compile. In putty or virtualbox put the next commands: cd /path_to_your_source/libsql in my case cd /usr/src/mainline_released/Srcs/Sever/libsql gmake clean gmake After that : cd /path_to_your_source/db/src gmake clean After the clean, open the folder .obj and verify if is empty, if isn't empy, empty it delete all files. After that gmake Now the last step, open navicat connect to your server and on the databases account, common, player, hotbackup and log, right-click->Database properties. Set your character set: latin1, latin2, latin5 And collation: I use general but if you fin your country you can put it. That was all, and sorry for my english. i have error. fixed this is not work wtf? 1 Link to comment Share on other sites More sharing options...
TheSLZ 107 Posted August 26, 2014 Share Posted August 26, 2014 For me worked this fix Link to comment Share on other sites More sharing options...
Honorable Member xP3NG3Rx 19764 Posted August 31, 2014 Honorable Member Share Posted August 31, 2014 (edited) Doesn't work for me :S First start Second start It pisses me off when I restart my PC I can start the db again by once. It's works! I forgot to save the AsyncSQL.cpp file changes in Notepad++ x'Đ Edited September 18, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
designer132 6 Posted September 3, 2014 Share Posted September 3, 2014 Hi, i have problem with compiling DB. Everything is ok, but after creating output (linking) i have error: /usr/bin/ld: cannot find -lsql gmake: *** [../db_r44444] Error 1 and after that compiling ends without output file. Thanks for any help... PS. Sorry for my bad english. Link to comment Share on other sites More sharing options...
TheSLZ 107 Posted September 3, 2014 Share Posted September 3, 2014 Just use this MakeFile: MAKE = gmake CC = g++ INCDIR = LIBDIR = BINDIR = .. OBJDIR = .obj LIBDIR += -L/usr/local/lib/mysql GCC_VERSION = $(shell $(CC) --version 2>&1 | grep "(GCC)" | cut -d' ' -f3 | cut -d'.' -f1) BSD_VERSION = $(shell uname -v 2>&1 | cut -d' ' -f2 | cut -d'.' -f1) P4_VERSION = 40146 $(shell if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi) TARGET = $(BINDIR)/db_r$(P4_VERSION) CFLAGS = -g -Wall -O2 -pipe -fno-rtti -fno-exceptions -pthread -D_THREAD_SAFE ifeq ($(GCC_VERSION), 4) CFLAGS += -mtune=i686 else CFLAGS += -mcpu=i686 endif # boost INCDIR += -I../../boost LIBDIR += -L../../libthecore/lib -L../../libsql -L../../libpoly -L../../libgame/lib ifeq ($(BSD_VERSION), 7) INCDIR += -I../../libmysql/7.x-5.1.35 LIBDIR += -L../../libmysql/7.x-5.1.35 else INCDIR += -I../../libmysql/5.x-5.1.35 LIBDIR += -L../../libmysql/5.x-5.1.35 endif LIBS = -lthecore -lmysqlclient -lsql -lpoly -lgame -lm -lz SRCS = Config.cpp NetBase.cpp Peer.cpp PeerBase.cpp Main.cpp Lock.cpp DBManager.cpp Cache.cpp LoginData.cpp ClientManager.cpp ClientManagerPlayer.cpp ClientManagerLogin.cpp ClientManagerBoot.cpp ClientManagerParty.cpp ClientManagerGuild.cpp GuildManager.cpp HB.cpp PrivManager.cpp MoneyLog.cpp ItemAwardManager.cpp ClientManagerEventFlag.cpp Marriage.cpp Monarch.cpp BlockCountry.cpp ItemIDRangeManager.cpp ClientManagerHorseName.cpp version.cpp AuctionManager.cpp ProtoReader.cpp CsvReader.cpp OBJS = $(SRCS:%.cpp=$(OBJDIR)/%.o) default: $(TARGET) $(TARGET): $(OBJS) @echo linking ... @$(CC) $(CFLAGS) $(LIBDIR) $(OBJS) $(LIBS) -o $(TARGET) @touch version.cpp $(OBJDIR)/%.o: %.cpp @echo compile $< @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@ $(OBJDIR)/version.o: version.cpp @$(CC) $(CFLAGS) -D__P4_VERSION__="$(P4_VERSION)" -c $< -o $@ @echo compile $< $(OBJDIR): @mkdir $(OBJDIR) clean: @rm -f $(OBJS) $(BINDIR)/db_r* dep: @touch Depend makedepend -fDepend $(INCDIR) -I/usr/include/c++/3.3 -I/usr/include/c++/4.2 -p$(OBJDIR)/ $(SRCS) 2> /dev/null sinclude Depend And edit version.cpp like this: #include <stdio.h> #include <stdlib.h> void WriteVersion() { #ifndef __WIN32__ FILE* fp(fopen("VERSION.txt", "w")); if (NULL != fp) { fprintf(fp, "db revision: 40146n"); //fprintf(fp, "%s@%s:%sn", __USER__, __HOSTNAME__, __PWD__); fclose(fp); } else { fprintf(stderr, "cannot open VERSION.txtn"); exit(0); } #endif } After you are able to compile db core. 1 Link to comment Share on other sites More sharing options...
Shichirojii 8 Posted September 4, 2014 Share Posted September 4, 2014 thanks 1 Link to comment Share on other sites More sharing options...
Yiv 321 Posted September 4, 2014 Share Posted September 4, 2014 Well, for me it didn't work. I did everything like it was shown in this thread (I checked twice) except with the "latin1" and not "latin2" charset. It's sitll not working. Regards Link to comment Share on other sites More sharing options...
Premium Ocelot2606 141 Posted January 24, 2015 Premium Share Posted January 24, 2015 Cant Complile AsyncSQL.h: In constructor 'CAsyncSQL::CAsyncSQL()': AsyncSQL.h:201: warning: 'CAsyncSQL::m_iCopiedQuery' will be initialized after AsyncSQL.h:175: warning: 'int CAsyncSQL::m_iPort' AsyncSQL.cpp:19: warning: when initialized here AsyncSQL.cpp: At global scope: AsyncSQL.cpp:712: error: expected `)' before '{' token AsyncSQL.cpp: In member function 'void CAsyncSQL2::SetLocale(const std::string&)': AsyncSQL.cpp:713: error: 'stLocale' was not declared in this scope Makefile:41: recipe for target 'AsyncSQL.o' failed gmake[1]: *** [AsyncSQL.o] Error 1 gmake[1]: Leaving directory '/usr/wolfman_branch/wolf/Srcs/Server/libsql' Makefile:25: recipe for target 'default' failed gmake: *** [default] Error 2 Link to comment Share on other sites More sharing options...
Reboot 772 Posted January 24, 2015 Share Posted January 24, 2015 Just use this MakeFile: MAKE = gmake CC = g++ INCDIR = LIBDIR = BINDIR = .. OBJDIR = .obj LIBDIR += -L/usr/local/lib/mysql GCC_VERSION = $(shell $(CC) --version 2>&1 | grep "(GCC)" | cut -d' ' -f3 | cut -d'.' -f1) BSD_VERSION = $(shell uname -v 2>&1 | cut -d' ' -f2 | cut -d'.' -f1) P4_VERSION = 40146 $(shell if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi) TARGET = $(BINDIR)/db_r$(P4_VERSION) CFLAGS = -g -Wall -O2 -pipe -fno-rtti -fno-exceptions -pthread -D_THREAD_SAFE ifeq ($(GCC_VERSION), 4) CFLAGS += -mtune=i686 else CFLAGS += -mcpu=i686 endif # boost INCDIR += -I../../boost LIBDIR += -L../../libthecore/lib -L../../libsql -L../../libpoly -L../../libgame/lib ifeq ($(BSD_VERSION), 7) INCDIR += -I../../libmysql/7.x-5.1.35 LIBDIR += -L../../libmysql/7.x-5.1.35 else INCDIR += -I../../libmysql/5.x-5.1.35 LIBDIR += -L../../libmysql/5.x-5.1.35 endif LIBS = -lthecore -lmysqlclient -lsql -lpoly -lgame -lm -lz SRCS = Config.cpp NetBase.cpp Peer.cpp PeerBase.cpp Main.cpp Lock.cpp DBManager.cpp Cache.cpp LoginData.cpp ClientManager.cpp ClientManagerPlayer.cpp ClientManagerLogin.cpp ClientManagerBoot.cpp ClientManagerParty.cpp ClientManagerGuild.cpp GuildManager.cpp HB.cpp PrivManager.cpp MoneyLog.cpp ItemAwardManager.cpp ClientManagerEventFlag.cpp Marriage.cpp Monarch.cpp BlockCountry.cpp ItemIDRangeManager.cpp ClientManagerHorseName.cpp version.cpp AuctionManager.cpp ProtoReader.cpp CsvReader.cpp OBJS = $(SRCS:%.cpp=$(OBJDIR)/%.o) default: $(TARGET) $(TARGET): $(OBJS) @echo linking ... @$(CC) $(CFLAGS) $(LIBDIR) $(OBJS) $(LIBS) -o $(TARGET) @touch version.cpp $(OBJDIR)/%.o: %.cpp @echo compile $< @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@ $(OBJDIR)/version.o: version.cpp @$(CC) $(CFLAGS) -D__P4_VERSION__="$(P4_VERSION)" -c $< -o $@ @echo compile $< $(OBJDIR): @mkdir $(OBJDIR) clean: @rm -f $(OBJS) $(BINDIR)/db_r* dep: @touch Depend makedepend -fDepend $(INCDIR) -I/usr/include/c++/3.3 -I/usr/include/c++/4.2 -p$(OBJDIR)/ $(SRCS) 2> /dev/null sinclude Depend And edit version.cpp like this: #include <stdio.h> #include <stdlib.h> void WriteVersion() { #ifndef __WIN32__ FILE* fp(fopen("VERSION.txt", "w")); if (NULL != fp) { fprintf(fp, "db revision: 40146n"); //fprintf(fp, "%s@%s:%sn", __USER__, __HOSTNAME__, __PWD__); fclose(fp); } else { fprintf(stderr, "cannot open VERSION.txtn"); exit(0); } #endif } After you are able to compile db core. Its not necesary to edit version.cpp ,only makefile. 3 Link to comment Share on other sites More sharing options...
Xalyx 3 Posted October 27, 2015 Share Posted October 27, 2015 i have a big problem: Wie viele Channels möchtest du starten ? 1 - (1) Channel 2 - (2) Channel 3 - (3) Channel 4 - (4) Channel 5 - (5) Auth Serverstarter 1 Startet die Datenbank .. Real Server Log Offlog_file_delete_old: stat: No such file or directory AsyncSQL: connected to localhost (reconnect 1) Success PLAYER AsyncSQL: connected to localhost (reconnect 1) AsyncSQL: connected to localhost (reconnect 1) AsyncSQL: connected to localhost (reconnect 1) Success ACCOUNT AsyncSQL: connected to localhost (reconnect 1) AsyncSQL: connected to localhost (reconnect 1) AsyncSQL: connected to localhost (reconnect 1) Success COMMON AsyncSQL: connected to localhost (reconnect 1) AsyncSQL: connected to localhost (reconnect 1) AsyncSQL: connected to localhost (reconnect 1) Success HOTBACKUP AsyncSQL: connected to localhost (reconnect 1) AsyncSQL: connected to localhost (reconnect 1) Die Datenbank wurde gestartet. Startet den Loginserver .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: auth Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected Der Loginserver wurde gestartet[0m Starte game99_1 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel99_core1 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected game99 Core 1 wurde gestartet. Starte game99_2 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel99_core2 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected game99 Core 2 wurde gestartet. Starte game99_3 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel99_core3 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected game99 Core 3 wurde gestartet. Starte game99_4 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel99_core4 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected game99 Core 4 wurde gestartet. Starte game99 Core 5 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel99_core5 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected game99 Core 5 wurde gestartet. Startet Channel 1 Core 1 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel1_core1 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected Channel 1 Core 1 wurde gestartet. Startet Channel 1 Core 2 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel1_core2 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected Channel 1 Core 2 wurde gestartet. Startet Channel 1 Core 3 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel1_core3 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected Channel 1 Core 3 wurde gestartet. Startet Channel 1 Core 4 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel1_core4 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected Channel 1 Core 4 wurde gestartet. Startet Channel 1 Core 5 .. PUBLIC_IP: 51.000.00.000 interface em0 HOSTNAME: channel1_core5 Character set 'name2' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml' file mysql_real_connect: Can't initialize character set name2 (path: /usr/local/share/mysql/charsets/) cannot open direct sql connection to host: localhost user: mt2 db: common cannot start server while no common sql connected Channel 1 Core 5 wurde gestartet. Channel Gestartet Link to comment Share on other sites More sharing options...
Recommended Posts