django-sitetree icon indicating copy to clipboard operation
django-sitetree copied to clipboard

Issue with add site tree item (using ms-sql)

Open mikecaro opened this issue 9 years ago • 4 comments

I can only add one site tree item to a site tree. When I attempt to add a second, I get this error:

('23000', "[23000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Violation of UNIQUE KEY constraint 'sitetree_treeitem_tree_id_15363010_uniq'. Cannot insert duplicate key in object 'dbo.sitetree_treeitem'. The duplicate key value is (1, <NULL>). (2627) (SQLExecDirectW); [01000] [Microsoft][SQL Server Native Client 11.0][SQL Server]The statement has been terminated. (3621)")

Please let me know how I can help (clarifications, more detail, etc).

mikecaro avatar Jun 26 '15 19:06 mikecaro

Sorry, completely missed that issue out. I haven't tested sitetree neither on Windows nor on MS SQL. I do not have such an environment, so the best I could do is to keep this issue open, so we could wait for someone who has an appropriate experience.

idlesign avatar Jul 25 '15 15:07 idlesign

Hi,

I have the same problem here. What I see is that although the form does not pass the id as value, by the time the sql gets generated the insert has id = 1

C:\Python27\lib\site-packages\django\db\backends\utils.py in execute
class CursorDebugWrapper(CursorWrapper):
    # XXX callproc isn't instrumented at this time.
    def execute(self, sql, params=None):
        start = time()
        try:
                        return super(CursorDebugWrapper, self).execute(sql, params) ...
        finally:
            stop = time()
            duration = stop - start
            sql = self.db.ops.last_executed_query(self.cursor, sql, params)
            self.db.queries_log.append({
                'sql': sql,
▼ Local vars
Variable    Value
self    
<django.db.backends.utils.CursorDebugWrapper object at 0x0000000005C302E8>
stop    
1443988139.048
start   
1443988139.04
params  
(u'Authorization Requests',
 u'',
 u'administration:manage_auth_requests',
 True,
 1,
 False,
 None,
 u'',
 True,
 False,
 True,
 True,
 False,
 False,
 1,
 4,
 0)
sql 
u"QUERY = u'SET NOCOUNT ON INSERT INTO [sitetree_treeitem] ([title], [hint], [url], [urlaspattern], [tree_id], [hidden], [alias], [description], [inmenu], [inbreadcrumbs], [insitetree], [access_loggedin], [access_guest], [access_restricted], [access_perm_type], [parent_id], [sort_order]) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s); SELECT CAST(SCOPE_IDENTITY() AS BIGINT)' - PARAMS = (u'Authorization Requests', u'', u'administration:manage_auth_requests', 1, 1, 0, None, u'', 1, 0, 1, 1, 0, 0, 1, 4, 0)"
duration    
0.00800013542175293

dani0805 avatar Oct 04 '15 19:10 dani0805

ignore my previous comment. it is the tree_id which is 1 and it is of course ok. Still debugging

dani0805 avatar Oct 04 '15 20:10 dani0805

At least for me the problem is the alias. If it is empty I get the error above. The database is set up correctly to allow nulls. Not sure what is going on but if you are having this problem just make sure you fill the alias.

dani0805 avatar Oct 04 '15 20:10 dani0805