php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #56921 database table is locked
Submitted: 2006-03-27 09:49 UTC Modified: 2006-03-28 02:50 UTC
From: danhen at web dot de Assigned:
Status: Closed Package: PDO_SQLITE (PECL)
PHP Version: 5.1.1 OS: WinXP
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
11 + 7 = ?
Subscribe to this entry?

 
 [2006-03-27 09:49 UTC] danhen at web dot de
Description:
------------
A queryqueue like this produces Errormessages when used with PDO::query():

SQLite Version 2 Databases:

SELECT sql FROM sqlite_master WHERE name = 'test' AND type = 
'table'
--OK
BEGIN TRANSACTION
--OK
CREATE TEMPORARY TABLE test_backup AS SELECT * FROM test
--OK

DROP TABLE test
Array
(
    [0] => HY000
    [1] => 1
    [2] => SQL logic error or missing database
)

CREATE TABLE test (foo VARCHAR(123), bar VARCHAR(125), baz VARCHAR(142))

Array
(
    [0] => HY000
    [1] => 1
    [2] => table test already exists
)

INSERT INTO test (foo, bar, baz) SELECT foo, bar, baz FROM test_backup
--OK because table has no PRIMARY KEY
COMMIT
--OK

SQLite Version 3 reports:

SELECT sql FROM sqlite_master WHERE name = 'test' AND type = 
'table'
--OK
BEGIN TRANSACTION
--OK
CREATE TEMPORARY TABLE test_backup AS SELECT * FROM test
--OK

DROP TABLE test
Array
(
    [0] => HY000
    [1] => 1
    [2] => Database table is locked
)

CREATE TABLE test (foo VARCHAR(123), bar VARCHAR(125), baz VARCHAR(142))

Array
(
    [0] => HY000
    [1] => 1
    [2] => table test already exists
)

INSERT INTO test (foo, bar, baz) SELECT foo, bar, baz FROM test_backup
--OK because table has no PRIMARY KEY
COMMIT
--OK

The 'old' sqlite extensions works fine with this code also pdo_sqlite does when the connection is closed and reopened right before beginning the transaction. Running this code on the same connection causes the written messages. closeCursor() is called between the different statements and the Statement-objects are unset()'ed.

PHP-Version is 5.1.2 (it isn't in the dropdown)

I dont now if it is a PDO_SQLite Bug or a bug in SQlite itself. 


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-03-27 11:05 UTC] wez@php.net
Please supply self-contained test scripts.
 [2006-03-28 02:50 UTC] danhen at web dot de
No need any more. Sorry. There seems to be a system side problem which caused the behavior. It looks like the harddrive starts to give up... After testing everything on a other machine with the same read/write rights it just worked fine.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Apr 23 07:01:29 2024 UTC