6.0.0-beta1
7/4/25

[#12998] git HEAD: DB migration fails
Summary git HEAD: DB migration fails
Queue Horde Base
Queue Version Git master
Type Bug
State Resolved
Priority 1. Low
Owners
Requester thomas.jarosch (at) intra2net (dot) com
Created 02/27/2014 (4145 days ago)
Due
Updated 03/03/2014 (4141 days ago)
Assigned 02/27/2014 (4145 days ago)
Resolved 03/03/2014 (4141 days ago)
Github Issue Link
Github Pull Request
Milestone
Patch No

History
03/03/2014 11:35:08 AM Thomas Jarosch Comment #8
State ⇒ Resolved
Reply to this comment
This was fixed by:

commit 07856976a0e64b99048cbc43adce95cca50d4f2e
Author: Matthias Rella <git@myrho.net>
Date:   Sat Mar 1 23:34:53 2014 +0100

     fixed checking whether array key is set

02/28/2014 08:18:22 AM Thomas Jarosch Comment #7 Reply to this comment
What's the result of calling this in Horde's PHP console:
var_dump($injector->getInstance('Horde_Db_Adapter')->columns('turba_shares'));
array(11) {
   ["share_id"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#208 (11) {
     ["_name":protected]=>
     string(8) "share_id"
     ["_type":protected]=>
     string(7) "integer"
     ["_null":protected]=>
     bool(false)
     ["_limit":protected]=>
     NULL
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     NULL
     ["_sqlType":protected]=>
     string(7) "INTEGER"
     ["_isText":protected]=>
     bool(false)
     ["_isNumber":protected]=>
     bool(true)
   }
   ["share_name"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#199 (11) {
     ["_name":protected]=>
     string(10) "share_name"
     ["_type":protected]=>
     string(6) "string"
     ["_null":protected]=>
     bool(false)
     ["_limit":protected]=>
     int(255)
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     NULL
     ["_sqlType":protected]=>
     string(12) "varchar(255)"
     ["_isText":protected]=>
     bool(true)
     ["_isNumber":protected]=>
     bool(false)
   }
   ["share_owner"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#212 (11) {
     ["_name":protected]=>
     string(11) "share_owner"
     ["_type":protected]=>
     string(6) "string"
     ["_null":protected]=>
     bool(false)
     ["_limit":protected]=>
     int(255)
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     NULL
     ["_sqlType":protected]=>
     string(12) "varchar(255)"
     ["_isText":protected]=>
     bool(true)
     ["_isNumber":protected]=>
     bool(false)
   }
   ["share_flags"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#210 (11) {
     ["_name":protected]=>
     string(11) "share_flags"
     ["_type":protected]=>
     string(7) "integer"
     ["_null":protected]=>
     bool(false)
     ["_limit":protected]=>
     NULL
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     int(0)
     ["_sqlType":protected]=>
     string(3) "int"
     ["_isText":protected]=>
     bool(false)
     ["_isNumber":protected]=>
     bool(true)
   }
   ["perm_creator"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#213 (11) {
     ["_name":protected]=>
     string(12) "perm_creator"
     ["_type":protected]=>
     string(7) "integer"
     ["_null":protected]=>
     bool(false)
     ["_limit":protected]=>
     NULL
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     int(0)
     ["_sqlType":protected]=>
     string(3) "int"
     ["_isText":protected]=>
     bool(false)
     ["_isNumber":protected]=>
     bool(true)
   }
   ["perm_default"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#214 (11) {
     ["_name":protected]=>
     string(12) "perm_default"
     ["_type":protected]=>
     string(7) "integer"
     ["_null":protected]=>
     bool(false)
     ["_limit":protected]=>
     NULL
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     int(0)
     ["_sqlType":protected]=>
     string(3) "int"
     ["_isText":protected]=>
     bool(false)
     ["_isNumber":protected]=>
     bool(true)
   }
   ["perm_guest"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#215 (11) {
     ["_name":protected]=>
     string(10) "perm_guest"
     ["_type":protected]=>
     string(7) "integer"
     ["_null":protected]=>
     bool(false)
     ["_limit":protected]=>
     NULL
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     int(0)
     ["_sqlType":protected]=>
     string(3) "int"
     ["_isText":protected]=>
     bool(false)
     ["_isNumber":protected]=>
     bool(true)
   }
   ["attribute_name"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#216 (11) {
     ["_name":protected]=>
     string(14) "attribute_name"
     ["_type":protected]=>
     string(6) "string"
     ["_null":protected]=>
     bool(false)
     ["_limit":protected]=>
     int(255)
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     NULL
     ["_sqlType":protected]=>
     string(12) "varchar(255)"
     ["_isText":protected]=>
     bool(true)
     ["_isNumber":protected]=>
     bool(false)
   }
   ["attribute_desc"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#217 (11) {
     ["_name":protected]=>
     string(14) "attribute_desc"
     ["_type":protected]=>
     string(6) "string"
     ["_null":protected]=>
     bool(true)
     ["_limit":protected]=>
     int(255)
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     NULL
     ["_sqlType":protected]=>
     string(12) "varchar(255)"
     ["_isText":protected]=>
     bool(true)
     ["_isNumber":protected]=>
     bool(false)
   }
   ["attribute_params"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#218 (11) {
     ["_name":protected]=>
     string(16) "attribute_params"
     ["_type":protected]=>
     string(4) "text"
     ["_null":protected]=>
     bool(true)
     ["_limit":protected]=>
     NULL
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     NULL
     ["_sqlType":protected]=>
     string(4) "text"
     ["_isText":protected]=>
     bool(true)
     ["_isNumber":protected]=>
     bool(false)
   }
   ["share_parents"]=>
   object(Horde_Db_Adapter_Sqlite_Column)#219 (11) {
     ["_name":protected]=>
     string(13) "share_parents"
     ["_type":protected]=>
     string(4) "text"
     ["_null":protected]=>
     bool(true)
     ["_limit":protected]=>
     NULL
     ["_precision":protected]=>
     NULL
     ["_scale":protected]=>
     NULL
     ["_unsigned":protected]=>
     bool(false)
     ["_default":protected]=>
     NULL
     ["_sqlType":protected]=>
     string(4) "text"
     ["_isText":protected]=>
     bool(true)
     ["_isNumber":protected]=>
     bool(false)
   }
}
02/27/2014 05:47:12 PM Jan Schneider Comment #6 Reply to this comment
What's the result of calling this in Horde's PHP console:
var_dump($injector->getInstance('Horde_Db_Adapter')->columns('turba_shares'));
02/27/2014 03:03:21 PM Thomas Jarosch Comment #5 Reply to this comment
SQLite 3.7.17
My git box still uses sqlite 3.6.22.

I've debugged the statement manually:

"share_id" INTEGER
    ...>           PRIMARY KEY AUTOINCREMENT NOT NULL(I, I)


I'm still wondering where that strange "NULL(I, I)" is coming from,
the whole SQL statement works fine if I remove the "(I, I)" part.

02/27/2014 01:59:59 PM Jan Schneider Comment #4 Reply to this comment
SQLite 3.7.17
02/27/2014 01:57:39 PM Jan Schneider Comment #3
State ⇒ Feedback
Reply to this comment
Cannot reproduce. Are you sure that you are using the latest Horde_Db 
version? This the query that's generated here:

         CREATE TEMPORARY TABLE "altered_turba_sharesng" ( "share_id" INTEGER
           PRIMARY KEY AUTOINCREMENT NOT NULL NOT NULL, "share_name" 
varchar(255)
           NOT NULL, "share_owner" varchar(255), "share_flags" int NOT NULL
           DEFAULT 0, "perm_creator_2" boolean NOT NULL DEFAULT 0,
           "perm_creator_4" boolean NOT NULL DEFAULT 0, 
"perm_creator_8" boolean
           NOT NULL DEFAULT 0, "perm_creator_16" boolean NOT NULL DEFAULT 0,
           "perm_default_2" boolean NOT NULL DEFAULT 0, 
"perm_default_4" boolean
           NOT NULL DEFAULT 0, "perm_default_8" boolean NOT NULL DEFAULT 0,
           "perm_default_16" boolean NOT NULL DEFAULT 0, "perm_guest_2" boolean
           NOT NULL DEFAULT 0, "perm_guest_4" boolean NOT NULL DEFAULT 0,
           "perm_guest_8" boolean NOT NULL DEFAULT 0, "perm_guest_16" 
boolean NOT
           NULL DEFAULT 0, "attribute_name" varchar(255) NOT NULL,
           "attribute_desc" varchar(255), "attribute_params" text,
           "share_parents" text )

Still a NOT NULL too many, but it succeeds.
02/27/2014 10:24:13 AM Thomas Jarosch Comment #2 Reply to this comment
I've modified the code that outputs the SQL query error to show a stack trace:

2014-02-27T11:22:20+01:00 ERR: HORDE [horde] SQL STACK TRACE: #0 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php(197): 
PDO->query('CREATE TEMPORAR...')
#1 [internal function]: Horde_Db_Adapter_Pdo_Base->execute('CREATE 
TEMPORAR...', NULL, NULL)
#2 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Sqlite.php(182): 
call_user_func_array(Array, Array)
#3 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Sqlite.php(134): 
Horde_Db_Adapter_Pdo_Sqlite->_catchSchemaChanges('execute', Array)
#4 [internal function]: Horde_Db_Adapter_Pdo_Sqlite->execute('CREATE 
TEMPORAR...')
#5 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Base/Schema.php(166): 
call_user_func_array(Array, Array)
#6 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Base/Schema.php(569): 
Horde_Db_Adapter_Base_Schema->__call('execute', Array)
#7 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Base/Schema.php(569): 
Horde_Db_Adapter_Sqlite_Schema->execute('CREATE TEMPORAR...')
#8 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Base/TableDefinition.php(203): 
Horde_Db_Adapter_Base_Schema->endTable(Object(Horde_Db_Adapter_Base_TableDefinition))
#9 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php(624): 
Horde_Db_Adapter_Base_TableDefinition->end()
#10 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php(557): Horde_Db_Adapter_Sqlite_Schema->_copyTable('turba_shares', 'altered_turba_s...', Array, 
NULL)
#11 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php(529): Horde_Db_Adapter_Sqlite_Schema->_moveTable('turba_shares', 'altered_turba_s...', 
Array)
#12 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php(308): Horde_Db_Adapter_Sqlite_Schema->_alterTable('turba_shares', Array, 
'?lambda_1')
#13 [internal function]: 
Horde_Db_Adapter_Sqlite_Schema->changeColumn('turba_shares', 
'share_parents', 'string', Array)
#14 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Base.php(255): 
call_user_func_array(Array, Array)
#15 [internal function]: Horde_Db_Adapter_Base->__call('changeColumn', Array)
#16 [internal function]: 
Horde_Db_Adapter_Pdo_Sqlite->changeColumn('turba_shares', 
'share_parents', 'string', Array)
#17 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Migration/Base.php(86): 
call_user_func_array(Array, Array)
#18 
/datastore/DEVEL/horde/turba/migration/11_turba_upgrade_parents.php(31): 
Horde_Db_Migration_Base->__call('changeColumn', Array)
#19 
/datastore/DEVEL/horde/turba/migration/11_turba_upgrade_parents.php(31): 
TurbaUpgradeParents->changeColumn('turba_shares', 'share_parents', 
'string', Array)
#20 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Migration/Base.php(121): 
TurbaUpgradeParents->up()
#21 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Migration/Migrator.php(182): 
Horde_Db_Migration_Base->migrate('up')
#22 
/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Migration/Migrator.php(102): 
Horde_Db_Migration_Migrator->_doMigrate()
#23 /datastore/DEVEL/horde/horde/admin/config/index.php(126): 
Horde_Db_Migration_Migrator->up()
#24 {main}
         CREATE TEMPORARY TABLE "altered_turba_shares" ( "share_id" INTEGER
           PRIMARY KEY AUTOINCREMENT NOT NULL(I, I) NOT NULL, "share_name"
           varchar(255) NOT NULL, "share_owner" varchar(255) NOT NULL,
           "share_flags" int NOT NULL DEFAULT 0, "perm_creator" int NOT NULL
           DEFAULT 0, "perm_default" int NOT NULL DEFAULT 0, 
"perm_guest" int NOT
           NULL DEFAULT 0, "attribute_name" varchar(255) NOT NULL,
           "attribute_desc" varchar(255), "attribute_params" text,
           "share_parents" text )  [pid 5590 on line 201 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]

02/27/2014 10:11:58 AM Thomas Jarosch Comment #1
Priority ⇒ 1. Low
Type ⇒ Bug
Summary ⇒ git HEAD: DB migration fails
Queue ⇒ Horde Base
Milestone ⇒
Patch ⇒ No
State ⇒ Unconfirmed
Reply to this comment
Hi,

I just tried updating my horde git HEAD installation to the latest commit.
(The system was last updated in November 2013 or so)

Some DB migration query fails with an sqlite backend:

2014-02-27T11:06:21+01:00 ERR: HORDE [horde] SQL QUERY FAILED: 
SQLSTATE[HY000]: General error: 1 near "(": syntax error
         CREATE TEMPORARY TABLE "altered_kronolith_shares" ( "share_id" INTEGER
           PRIMARY KEY AUTOINCREMENT NOT NULL(I, I) NOT NULL, "share_name"
           varchar(255) NOT NULL, "share_owner" varchar(255) NOT NULL,
           "share_flags" int NOT NULL DEFAULT 0, "perm_creator" int NOT NULL
           DEFAULT 0, "perm_default" int NOT NULL DEFAULT 0, 
"perm_guest" int NOT
           NULL DEFAULT 0, "attribute_name" varchar(255) NOT NULL,
           "attribute_desc" varchar(255), "attribute_color" varchar(7),
           "share_parents" text )  [pid 5436 on line 200 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]
2014-02-27T11:06:21+01:00 ERR: HORDE [horde] SQL QUERY FAILED: 
SQLSTATE[HY000]: General error: 1 near "(": syntax error
         CREATE TEMPORARY TABLE "altered_nag_shares" ( "share_id" INTEGER
           PRIMARY KEY AUTOINCREMENT NOT NULL(I, I) NOT NULL, "share_name"
           varchar(255) NOT NULL, "share_owner" varchar(255), "share_flags"
           int(2) NOT NULL DEFAULT 0, "perm_creator" int(2) NOT NULL DEFAULT 0,
           "perm_default" int(2) NOT NULL DEFAULT 0, "perm_guest" 
int(2) NOT NULL
           DEFAULT 0, "attribute_name" varchar(255) NOT NULL, "attribute_desc"
           varchar(255), "attribute_color" varchar(7), "share_parents" text,
           "attribute_issmart" int DEFAULT 0, "attribute_search" text 
)  [pid 5436 on line 200 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]
2014-02-27T11:06:21+01:00 ERR: HORDE [horde] SQL QUERY FAILED: 
SQLSTATE[HY000]: General error: 1 near "(": syntax error
         CREATE TEMPORARY TABLE "altered_mnemo_shares" ( "share_id" INTEGER
           PRIMARY KEY AUTOINCREMENT NOT NULL(I, I) NOT NULL, "share_name"
           varchar(255) NOT NULL, "share_owner" varchar(255) NOT NULL,
           "share_flags" int NOT NULL DEFAULT 0, "perm_creator" int NOT NULL
           DEFAULT 0, "perm_default" int NOT NULL DEFAULT 0, 
"perm_guest" int NOT
           NULL DEFAULT 0, "attribute_name" varchar(255) NOT NULL,
           "attribute_desc" varchar(255), "share_parents" text )  [pid 
5436 on line 200 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]
2014-02-27T11:06:21+01:00 ERR: HORDE [horde] SQL QUERY FAILED: 
SQLSTATE[HY000]: General error: 1 near "(": syntax error
         CREATE TEMPORARY TABLE "altered_gollem_shares" ( "share_id" INTEGER
           PRIMARY KEY AUTOINCREMENT NOT NULL(I, I) NOT NULL, "share_name"
           varchar(255) NOT NULL, "share_owner" varchar(255) NOT NULL,
           "share_flags" int NOT NULL DEFAULT 0, "share_parents" text,
           "perm_creator" int NOT NULL DEFAULT 0, "perm_default" int NOT NULL
           DEFAULT 0, "perm_guest" int NOT NULL DEFAULT 0, "attribute_name"
           varchar(255) NOT NULL )  [pid 5436 on line 200 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]
2014-02-27T11:06:21+01:00 ERR: HORDE [horde] SQL QUERY FAILED: 
SQLSTATE[HY000]: General error: 1 near "(": syntax error
         CREATE TEMPORARY TABLE "altered_horde_groups" ( "group_uid" INTEGER
           PRIMARY KEY AUTOINCREMENT NOT NULL(I, I) NOT NULL, "group_name"
           varchar(255) NOT NULL, "group_parents" varchar(255) NOT NULL,
           "group_email" varchar(255) )  [pid 5436 on line 200 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]
2014-02-27T11:06:21+01:00 ERR: HORDE [horde] SQL QUERY FAILED: 
SQLSTATE[HY000]: General error: 1 near "(": syntax error
         CREATE TABLE "horde_imap_client_data" ( "messageid" INTEGER PRIMARY
           KEY AUTOINCREMENT NOT NULL(I, I), "hostspec" varchar(255) NOT NULL,
           "mailbox" varchar(255) NOT NULL, "modified" bigint, "port" int NOT
           NULL, "username" varchar(255) NOT NULL )  [pid 5436 on line 
200 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]
2014-02-27T11:06:21+01:00 ERR: HORDE [horde] SQL QUERY FAILED: 
SQLSTATE[HY000]: General error: 1 near "(": syntax error
         CREATE TABLE "horde_queue_tasks" ( "task_id" INTEGER PRIMARY KEY
           AUTOINCREMENT NOT NULL(I, I), "task_queue" varchar(255) NOT NULL,
           "task_fields" text NOT NULL )  [pid 5436 on line 200 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]
2014-02-27T11:06:21+01:00 ERR: HORDE [horde] SQL QUERY FAILED: 
SQLSTATE[HY000]: General error: 1 near "(": syntax error
         CREATE TEMPORARY TABLE "altered_horde_vfs" ( "vfs_id" INTEGER PRIMARY
           KEY AUTOINCREMENT NOT NULL(I, I) NOT NULL, "vfs_type" int NOT NULL,
           "vfs_path" varchar(255) NOT NULL, "vfs_name" varchar(255) NOT NULL,
           "vfs_modified" int NOT NULL, "vfs_owner" varchar(255) NOT NULL,
           "vfs_data" blob )  [pid 5436 on line 200 of 
"/datastore/DEVEL/horde/framework/Db/lib/Horde/Db/Adapter/Pdo/Base.php"]

Cheers,
Thomas

Saved Queries