diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py
index 9d2e474..9e02146 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py
@@ -332,10 +332,21 @@ class SynonymView(PGChildNodeView):
             if not status:
                 return internal_server_error(errormsg=res)
 
-            return ajax_response(
-                response=res['rows'][0],
-                status=200
-            )
+            if len(res['rows']) > 0:
+                return ajax_response(
+                    response=res['rows'][0],
+                    status=200
+                )
+            else:
+                return make_json_response(
+                    success=410,
+                    errormsg=gettext(
+                        'Error: Object not found.'
+                    ),
+                    info=gettext(
+                        'The specified synonym could not be found.\n'
+                    )
+                )
 
         except Exception as e:
             return internal_server_error(errormsg=str(e))
@@ -414,9 +425,9 @@ class SynonymView(PGChildNodeView):
             if not status:
                 return internal_server_error(errormsg=res)
 
-            data = res['rows'][0]
-
-            if data['name'] is None:
+            if len(res['rows']) > 0:
+                data = res['rows'][0]
+            else:
                 return make_json_response(
                     success=0,
                     errormsg=gettext(
@@ -578,7 +589,18 @@ class SynonymView(PGChildNodeView):
         if not status:
             return internal_server_error(errormsg=res)
 
-        data = res['rows'][0]
+        if len(res['rows']) > 0:
+           data = res['rows'][0]
+        else:
+            return make_json_response(
+                success=0,
+                errormsg=gettext(
+                    'Error: Object not found.'
+                ),
+                info=gettext(
+                    'The specified synonym could not be found.\n'
+                )
+            )
 
         SQL = render_template("/".join([self.template_path,
                                         'create.sql']),
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonym/sql/9.1_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonym/sql/9.1_plus/create.sql
index 22b89a8..33c24f3 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonym/sql/9.1_plus/create.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonym/sql/9.1_plus/create.sql
@@ -3,9 +3,13 @@
 {% set is_public = True %}
 {% endif %}
 {% if comment %}
--- {% if is_public %}Public{% else %}Private{% endif %} synonym: {{ conn|qtIdent(data.schema, data.name) }};
+-- {% if is_public %}Public{% else %}Private{% endif %} synonym: {% if is_public %}{{ conn|qtIdent(data.name) }};
+{% else %}{{ conn|qtIdent(data.schema, data.name) }};
+{% endif %}
 
--- DROP {% if is_public %}PUBLIC {% endif %}SYNONYM {{ conn|qtIdent(data.schema, data.name) }};
+-- DROP {% if is_public %}PUBLIC {% endif %}SYNONYM {% if is_public %}{{ conn|qtIdent(data.name) }};
+{% else %}{{ conn|qtIdent(data.schema, data.name) }};
+{% endif %}
 
 {% endif %}
 CREATE OR REPLACE {% if is_public %}
diff --git a/web/pgadmin/misc/sql/static/js/sql.js b/web/pgadmin/misc/sql/static/js/sql.js
index 0766daf..a712679 100644
--- a/web/pgadmin/misc/sql/static/js/sql.js
+++ b/web/pgadmin/misc/sql/static/js/sql.js
@@ -75,8 +75,14 @@ define([
             if (node.hasSQL) {
 
               sql = '';
-              var url = node.generate_url(item, 'sql', data, true);
 
+              // To handle special characters in node id
+              var _data = $.extend(true, {}, data);
+              if(_data && _.isString(_data._id)) {
+                _data._id = encodeURIComponent(_data._id)
+              }
+
+              var url = node.generate_url(item, 'sql', _data, true);
               $.ajax({
                 url: url,
                 type:'GET',
