diff --git a/django_tenants/tests/test_tenants.py b/django_tenants/tests/test_tenants.py index 77677cd9..5bebf111 100644 --- a/django_tenants/tests/test_tenants.py +++ b/django_tenants/tests/test_tenants.py @@ -594,6 +594,18 @@ def test_rename_schema_ok(self): self.assertFalse(schema_exists('test')) self.assertTrue(schema_exists('new_name')) + def test_rename_schema_numbers(self): + Client = get_tenant_model() + tenant = Client(schema_name='1234_test') + tenant.save() + self.assertTrue(schema_exists(tenant.schema_name)) + domain = get_tenant_domain_model()(tenant=tenant, domain='something.test.com') + domain.save() + schema_rename(tenant=Client.objects.filter(pk=tenant.pk).first(), new_schema_name='4321_new_name') + self.assertFalse(schema_exists('1234_test')) + self.assertTrue(schema_exists('4321_new_name')) + + # def test_clone_schema(self): # Client = get_tenant_model() # tenant = Client(schema_name='test') diff --git a/django_tenants/utils.py b/django_tenants/utils.py index 6dde1dd7..f4d51b98 100644 --- a/django_tenants/utils.py +++ b/django_tenants/utils.py @@ -210,7 +210,8 @@ def schema_rename(tenant, new_schema_name, database=get_tenant_database_alias(), raise ValidationError("New schema name already exists") if not is_valid_schema_name(new_schema_name): raise ValidationError("Invalid string used for the schema name.") - sql = 'ALTER SCHEMA {0} RENAME TO {1}'.format(tenant.schema_name, new_schema_name) + sql = 'ALTER SCHEMA {0} RENAME TO {1}'.format(connection.ops.quote_name(tenant.schema_name), + connection.ops.quote_name(new_schema_name)) cursor.execute(sql) cursor.close() tenant.schema_name = new_schema_name