summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mg_db.c2
-rw-r--r--mg_db.h1
-rw-r--r--mg_db_gd_mysql.c26
-rw-r--r--mg_db_gd_mysql.h1
-rw-r--r--mg_db_gd_pg.c15
-rw-r--r--mg_db_gd_pg.h1
-rw-r--r--mg_db_gd_sqlite.c6
-rw-r--r--mg_db_gd_sqlite.h1
8 files changed, 34 insertions, 19 deletions
diff --git a/mg_db.c b/mg_db.c
index ec39ad6..9bd66ee 100644
--- a/mg_db.c
+++ b/mg_db.c
@@ -325,6 +325,8 @@ mgDb::Connect ()
m_database_found = Create();
}
}
+ if (m_database_found)
+ m_database_found = SetCharset();
return m_database_found;
}
diff --git a/mg_db.h b/mg_db.h
index 68b81c2..6bb1c23 100644
--- a/mg_db.h
+++ b/mg_db.h
@@ -206,6 +206,7 @@ class mgDb {
time_t m_create_time;
string get_col0(const string sql);
virtual bool Create() = 0;
+ virtual bool SetCharset() = 0;
void FillTables();
virtual void StartTransaction() {};
virtual void Commit() {};
diff --git a/mg_db_gd_mysql.c b/mg_db_gd_mysql.c
index 78bee52..d8eaae7 100644
--- a/mg_db_gd_mysql.c
+++ b/mg_db_gd_mysql.c
@@ -416,6 +416,20 @@ mgDbGd::Commit()
}
bool
+mgDbGd::SetCharset()
+{
+ const char *cmd;
+ if (the_setup.utf8)
+ cmd="SET NAMES utf8";
+ else
+ cmd="SET NAMES latin1";
+ mgQuery q0(m_db,cmd);
+ if (!q0.ErrorMessage().empty())
+ return false;
+ return true;
+}
+
+bool
mgDbGd::Create()
{
if (!ServerConnect())
@@ -430,18 +444,6 @@ mgDbGd::Create()
if (!q.ErrorMessage().empty())
return false;
- if (the_setup.utf8)
- {
- const char *cmd;
- if (the_setup.utf8)
- cmd="SET NAMES utf8";
- else
- cmd="SET NAMES latin1";
- mgQuery q0(m_db,cmd);
- if (!q0.ErrorMessage().empty())
- return false;
- }
-
sprintf(buffer,"CREATE DATABASE %s",the_setup.DbName);
mgQuery q1(m_db,buffer);
if (!q1.ErrorMessage().empty())
diff --git a/mg_db_gd_mysql.h b/mg_db_gd_mysql.h
index 803320d..2379222 100644
--- a/mg_db_gd_mysql.h
+++ b/mg_db_gd_mysql.h
@@ -27,6 +27,7 @@ class mgDbGd : public mgDb {
bool ServerConnect();
bool ConnectDatabase();
bool Create();
+ bool SetCharset();
int AddToCollection( const string Name,const vector<mgItem*>&items,mgParts* what);
int RemoveFromCollection( const string Name,const vector<mgItem*>&items,mgParts* what);
diff --git a/mg_db_gd_pg.c b/mg_db_gd_pg.c
index f41339b..68a9482 100644
--- a/mg_db_gd_pg.c
+++ b/mg_db_gd_pg.c
@@ -252,21 +252,22 @@ mgDbGd::Commit()
bool
-mgDbGd::Create()
+mgDbGd::SetCharset()
{
-
- if (the_setup.utf8)
- {
const char *cmd;
if (the_setup.utf8)
- cmd="SET NAMES UTF8";
+ cmd="SET NAMES 'UTF8'";
else
- cmd="SET NAMES LATIN1";
+ cmd="SET NAMES 'LATIN1'";
mgQuery q0(m_db,cmd);
if (!q0.ErrorMessage().empty())
return false;
- }
+ return true;
+}
+bool
+mgDbGd::Create()
+{
// create database and tables
int len = sizeof( db_cmds ) / sizeof( char* );
for( int i=0; i < len; i ++ )
diff --git a/mg_db_gd_pg.h b/mg_db_gd_pg.h
index 7cf3221..d90ba30 100644
--- a/mg_db_gd_pg.h
+++ b/mg_db_gd_pg.h
@@ -50,6 +50,7 @@ class mgDbGd : public mgDb {
bool ServerConnect();
bool ConnectDatabase();
bool Create();
+ bool SetCharset();
bool NeedGenre2();
long thread_id() { return -1; }
diff --git a/mg_db_gd_sqlite.c b/mg_db_gd_sqlite.c
index 2945fdd..6fb3c22 100644
--- a/mg_db_gd_sqlite.c
+++ b/mg_db_gd_sqlite.c
@@ -290,6 +290,12 @@ mgSubstring(sqlite3_context *context, int argc, sqlite3_value **argv)
}
bool
+mgDbGd::SetCharset()
+{
+ return true;
+}
+
+bool
mgDbGd::ConnectDatabase ()
{
struct stat stbuf;
diff --git a/mg_db_gd_sqlite.h b/mg_db_gd_sqlite.h
index a21ac01..aaf8b3b 100644
--- a/mg_db_gd_sqlite.h
+++ b/mg_db_gd_sqlite.h
@@ -48,6 +48,7 @@ class mgDbGd : public mgDb {
~mgDbGd();
bool ConnectDatabase();
bool Create();
+ bool SetCharset();
bool NeedGenre2();
long thread_id() { return -1; }