ERROR: Altering of Table, could not replace the table name with the temporary one
Originally reported on Google Code with ID 234
What steps will reproduce the problem?
1. select a table
2.Click on Structure, select a column e.g. "colorname"
3.Click on Edit, change from "colorname" to "colorinput"
What is the expected output? What do you see instead?
Column name should be renamed,
I see the error:
ERROR: Altering of Table mytable failed - could not replace the table name with the
temporary one.
This may be a bug that needs to be reported at http://code.google.com/p/phpliteadmin/issues/list
What version of the product are you using? On what operating system? Which
Database Extension (PDO/SQLiteDatabase/SQLiteDatabase3 - see Database
structure-tab in phpLiteAdmin)?
phpliteadmin 1.9.4.1, on Windows 7 with PHP 5.3.1
Please provide any additional information below.
Reported by Thomas.Schotz
on 2013-11-20 09:43:23
Comments (14)
-
-
Account Deleted Hello, here is the debug output ---------------------------------------------------------------------- ALTER TABLE QUERY=(ALTER TABLE "mytable" CHANGE "Test" 'TestXX' TEXT), tablename=(mytable), alterdefs=(CHANGE "Test" 'TestXX' TEXT)ALTER TABLE: table=(mytable), alterdefs=(CHANGE "Test" 'TestXX' TEXT)SQL? SQL? origsql=(CREATE TABLE `mytable` ( installelementid INTEGER PRIMARY KEY AUTOINCREMENT , tabsjobtkid INT, textid INT, controldef TEXT, printertypeid INT, openui TEXT, CheckMy TEXT, HelpItem TEXT, Test TEXT )) preg_remove_create_table=(/^\s*+CREATE\s++TABLE\s++(?:'mytable'|mytable|"is_mytable"|`mytable`|\[mytable\])\s*+(\(.*+)$/is)ERROR: could not get rid of CREATE TABLE ---------------------------------------------------------------------- I am not the SQLite expert, but I think there is no ALTER TABLE ... CHANGE command for rename a column?
Reported by
Thomas.Schotz
on 2013-11-20 10:07:59 -
Thanks for the debug output. Yes, you are correct that SQLite does not support ALTER TABLE ... CHANGE. But phpLiteAdmin does by using a workaround (building an altered copy of the table and replacing the old table with the copy). And as this is rather tricky, there are still cases in which it fails such as yours. I will have a look at this and inform you if I have a patch to test or if I need additional information.
Reported by
crazy4chrissi
on 2013-11-20 10:13:55 -
Hmm. Strange. I tried to reproduce this with your create table statement but could not. Could you please provide me with some information from your php configuration? To get it, create a php file with the following content and upload it to your server: <?php phpinfo(); ?> I am only interested in what it says in the "PCRE" section. So something like this: pcre PCRE (Perl Compatible Regular Expressions) Support enabled PCRE Library Version 8.02 2010-03-19 Directive Local Value Master Value pcre.backtrack_limit 100000 100000 pcre.recursion_limit 100000 100000 Also to be on the safe side that it is a problem specific to the server rather than to the database: Can you upload the db-file of a db where altering a table fails for you?
Reported by
crazy4chrissi
on 2013-11-20 10:26:33 -
I am a bit confused about this line of your debug output: preg_remove_create_table=(/^\s*+CREATE\s++TABLE\s++(?:'mytable'|mytable|"is_mytable"|`mytable`|\[mytable\])\s*+(\(.*+)$/is) Where does "is_mytable" come from here? It normally should look like this: preg_remove_create_table=(/^\s*+CREATE\s++TABLE\s++(?:'mytable'|mytable|"mytable"|`mytable`|\[mytable\])\s*+(\(.*+)$/is) Not that it matters in your case as your CREATE TABLE statement uses the backtick notation (`mytable`). But if the debug output is somehow different from what the official phpLiteAdmin 1.9.4.1 release produces, this looks like you are using a modified version of phpLiteAdmin?
Reported by
crazy4chrissi
on 2013-11-20 11:02:21 -
Account Deleted Hello sorry if I have mixed something.. I now have made some new tests and debug output. Sometimes the rename works fine but sometimes not. For example here I tried to rename the column "ldapgroup" to "ldapgroupX". It shows me "..has been successfully altered" but if I go back and refresh, the column is still "ldapgroup" --------------------------------------------------------- ALTER TABLE QUERY=(ALTER TABLE "is_ldapgroup" CHANGE "ldapgroup" 'ldapgroupX' INTEGER), tablename=(is_ldapgroup), alterdefs=(CHANGE "ldapgroup" 'ldapgroupX' INTEGER)ALTER TABLE: table=(is_ldapgroup), alterdefs=(CHANGE "ldapgroup" 'ldapgroupX' INTEGER)SQL? SQL? origsql=(CREATE TABLE "is_ldapgroup" ( "ldapgroupid" INTEGER PRIMARY KEY AUTOINCREMENT, "ldapgroup" varchar(250) NOT NULL )) preg_remove_create_table=(/^\s*+CREATE\s++TABLE\s++(?:'is_ldapgroup'|is_ldapgroup|"is_ldapgroup"|`is_ldapgroup`|\[is_ldapgroup\])\s*+(\(.*+)$/is)createtemptableSQL=(CREATE TEMPORARY TABLE 't1384959057' ( "ldapgroupid" INTEGER PRIMARY KEY AUTOINCREMENT, "ldapgroup" varchar(250) NOT NULL ))SQL? def=CHANGE "ldapgroup" 'ldapgroupX' INTEGERaction=(change), column=(ldapgroup), column_escaped=(ldapgroup)preg_column_definition=(\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++)preg_columns_before=((?:((?:\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++,\s*+)*\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++),\s*+)?)preg_column_to_change=(\s*(?:'ldapgroup'|ldapgroup|"ldapgroup"|`ldapgroup`|\[ldapgroup\])(?:\s+varchar\(250\))?(\s+(?:(?:'(?:[^']*+|'')*+'|[^,'"`\[]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))+)?)CREATE TEMPORARY TABLE 't1384959057' ( "ldapgroupid" INTEGER PRIMARY KEY AUTOINCREMENT, "ldapgroup" varchar(250) NOT NULL )CREATE TEMPORARY TABLE 't1384959057' ( "ldapgroupid" INTEGER PRIMARY KEY AUTOINCREMENT,'ldapgroupX' INTEGER NOT NULL )/^\s*+(CREATE\s++TEMPORARY\s++TABLE\s++'t1384959057'\s*+\()(?:((?:\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++,\s*+)*\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++),\s*+)?\s*(?:'ldapgroup'|ldapgroup|"ldapgroup"|`ldapgroup`|\[ldapgroup\])(?:\s+varchar\(250\))?(\s+(?:(?:'(?:[^']*+|'')*+'|[^,'"`\[]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))+)?(,\s*(.+))?\s*\)\s*$/srecreate=(CREATE INDEX "is_ldapgroup_idx_ldapgroup_ldapgroup" ON "is_ldapgroup" ("ldapgroup");)BEGIN; CREATE TEMPORARY TABLE 't1384959057' ( "ldapgroupid" INTEGER PRIMARY KEY AUTOINCREMENT, "ldapgroup" varchar(250) NOT NULL ); INSERT INTO "t1384959057"("ldapgroupid", "ldapgroup") SELECT "ldapgroupid", "ldapgroup" FROM "is_ldapgroup"; DROP TABLE "is_ldapgroup"; CREATE TABLE 'is_ldapgroup' ( "ldapgroupid" INTEGER PRIMARY KEY AUTOINCREMENT,'ldapgroupX' INTEGER NOT NULL ); INSERT INTO "is_ldapgroup"("ldapgroupid", "ldapgroupX") SELECT "ldapgroupid", "ldapgroup" FROM "t1384959057"; DROP TABLE "t1384959057"; CREATE INDEX "is_ldapgroup_idx_ldapgroup_ldapgroup" ON "is_ldapgroup" ("ldapgroup"); COMMIT; -------------------------------------------------------- But here, in table is_language I tried to rename column "confignameX" to "configname" and it works fine. ------------------------------------------------------------------ ALTER TABLE QUERY=(ALTER TABLE "is_language" CHANGE "confignameX" 'configname' INTEGER), tablename=(is_language), alterdefs=(CHANGE "confignameX" 'configname' INTEGER)ALTER TABLE: table=(is_language), alterdefs=(CHANGE "confignameX" 'configname' INTEGER)SQL? SQL? origsql=(CREATE TABLE 'is_language' ( "languageid" INTEGER PRIMARY KEY AUTOINCREMENT, "languagedescription" varchar(255) NOT NULL, "textid" int(10) NOT NULL, "countrycode" varchar(10) NOT NULL,'confignameX' INTEGER NOT NULL )) preg_remove_create_table=(/^\s*+CREATE\s++TABLE\s++(?:'is_language'|is_language|"is_language"|`is_language`|\[is_language\])\s*+(\(.*+)$/is)createtemptableSQL=(CREATE TEMPORARY TABLE 't1384959362' ( "languageid" INTEGER PRIMARY KEY AUTOINCREMENT, "languagedescription" varchar(255) NOT NULL, "textid" int(10) NOT NULL, "countrycode" varchar(10) NOT NULL,'confignameX' INTEGER NOT NULL ))SQL? def=CHANGE "confignameX" 'configname' INTEGERaction=(change), column=(confignameX), column_escaped=(confignameX)preg_column_definition=(\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++)preg_columns_before=((?:((?:\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++,\s*+)*\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++),\s*+)?)preg_column_to_change=(\s*(?:'confignameX'|confignameX|"confignameX"|`confignameX`|\[confignameX\])(?:\s+INTEGER)?(\s+(?:(?:'(?:[^']*+|'')*+'|[^,'"`\[]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))+)?)CREATE TEMPORARY TABLE 't1384959362' ( "languageid" INTEGER PRIMARY KEY AUTOINCREMENT, "languagedescription" varchar(255) NOT NULL, "textid" int(10) NOT NULL, "countrycode" varchar(10) NOT NULL,'confignameX' INTEGER NOT NULL )CREATE TEMPORARY TABLE 't1384959362' ( "languageid" INTEGER PRIMARY KEY AUTOINCREMENT, "languagedescription" varchar(255) NOT NULL, "textid" int(10) NOT NULL, "countrycode" varchar(10) NOT NULL,'configname' INTEGER NOT NULL )/^\s*+(CREATE\s++TEMPORARY\s++TABLE\s++'t1384959362'\s*+\()(?:((?:\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++,\s*+)*\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++),\s*+)?\s*(?:'confignameX'|confignameX|"confignameX"|`confignameX`|\[confignameX\])(?:\s+INTEGER)?(\s+(?:(?:'(?:[^']*+|'')*+'|[^,'"`\[]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))+)?(,\s*(.+))?\s*\)\s*$/srecreate=(CREATE INDEX "is_language_CountryCode" ON "is_language" ("countrycode");)recreate=(CREATE INDEX "is_language_LanguageDescription" ON "is_language" ("languagedescription");)BEGIN; CREATE TEMPORARY TABLE 't1384959362' ( "languageid" INTEGER PRIMARY KEY AUTOINCREMENT, "languagedescription" varchar(255) NOT NULL, "textid" int(10) NOT NULL, "countrycode" varchar(10) NOT NULL,'confignameX' INTEGER NOT NULL ); INSERT INTO "t1384959362"("languageid", "languagedescription", "textid", "countrycode", "confignameX") SELECT "languageid", "languagedescription", "textid", "countrycode", "confignameX" FROM "is_language"; DROP TABLE "is_language"; CREATE TABLE 'is_language' ( "languageid" INTEGER PRIMARY KEY AUTOINCREMENT, "languagedescription" varchar(255) NOT NULL, "textid" int(10) NOT NULL, "countrycode" varchar(10) NOT NULL,'configname' INTEGER NOT NULL ); INSERT INTO "is_language"("languageid", "languagedescription", "textid", "countrycode", "configname") SELECT "languageid", "languagedescription", "textid", "countrycode", "confignameX" FROM "t1384959362"; DROP TABLE "t1384959362"; CREATE INDEX "is_language_CountryCode" ON "is_language" ("countrycode"); CREATE INDEX "is_language_LanguageDescription" ON "is_language" ("languagedescription"); COMMIT; ------------------------------------------------------------------- But here in table is_ldap I tried to rename column "ldap_sslX" to "ldap_ssl" and it throws the error. -------------------------------------------------------------------------- ALTER TABLE QUERY=(ALTER TABLE "is_ldap" CHANGE "ldap_sslX" 'ldap_ssl' INTEGER), tablename=(is_ldap), alterdefs=(CHANGE "ldap_sslX" 'ldap_ssl' INTEGER)ALTER TABLE: table=(is_ldap), alterdefs=(CHANGE "ldap_sslX" 'ldap_ssl' INTEGER)SQL? SQL? origsql=(CREATE TABLE [is_ldap] ( [ldapid] INTEGER PRIMARY KEY AUTOINCREMENT, [ldap_server] varchar(100) NOT NULL DEFAULT ('127.0.0.1'), [ldap_port] varchar(10) NOT NULL DEFAULT ('389'), [ldap_dn] varchar(250) NOT NULL DEFAULT ('DC=testserver,DC=danka,DC=de'), [ldap_atdn] varchar(250) NOT NULL DEFAULT ('testserver.danka.de'), [ldap_active] int(10) NOT NULL DEFAULT ('0'), [ldap_addressfieldsactive] int(10) NOT NULL DEFAULT ('1'), [ldap_addressfield1] varchar(255) NOT NULL DEFAULT ('displayname'), [ldap_addressfield2] varchar(255) NOT NULL DEFAULT ('mail'), [ldap_addressfield3] varchar(255) NOT NULL, [ldap_addressfield4] varchar(255) NOT NULL DEFAULT ('department'), [ldap_addressfield5] varchar(255) NOT NULL DEFAULT ('telephonenumber'), [ldap_addressfield6] varchar(255) NOT NULL DEFAULT ('physicaldeliveryofficename'), [ldap_addressfield7] varchar(255) NOT NULL DEFAULT ('l'), [ldap_adminname] varchar(250) NOT NULL, [ldap_adminpwd] varchar(250) NOT NULL, [ldap_autoupdate] int(10) DEFAULT ('0'), [ldap_location] varchar(200) DEFAULT NULL, [ldap_sslX] int(10) DEFAULT 0)) preg_remove_create_table=(/^\s*+CREATE\s++TABLE\s++(?:'is_ldap'|is_ldap|"is_ldap"|`is_ldap`|\[is_ldap\])\s*+(\(.*+)$/is)createtemptableSQL=(CREATE TEMPORARY TABLE 't1384960332' ( [ldapid] INTEGER PRIMARY KEY AUTOINCREMENT, [ldap_server] varchar(100) NOT NULL DEFAULT ('127.0.0.1'), [ldap_port] varchar(10) NOT NULL DEFAULT ('389'), [ldap_dn] varchar(250) NOT NULL DEFAULT ('DC=testserver,DC=danka,DC=de'), [ldap_atdn] varchar(250) NOT NULL DEFAULT ('testserver.danka.de'), [ldap_active] int(10) NOT NULL DEFAULT ('0'), [ldap_addressfieldsactive] int(10) NOT NULL DEFAULT ('1'), [ldap_addressfield1] varchar(255) NOT NULL DEFAULT ('displayname'), [ldap_addressfield2] varchar(255) NOT NULL DEFAULT ('mail'), [ldap_addressfield3] varchar(255) NOT NULL, [ldap_addressfield4] varchar(255) NOT NULL DEFAULT ('department'), [ldap_addressfield5] varchar(255) NOT NULL DEFAULT ('telephonenumber'), [ldap_addressfield6] varchar(255) NOT NULL DEFAULT ('physicaldeliveryofficename'), [ldap_addressfield7] varchar(255) NOT NULL DEFAULT ('l'), [ldap_adminname] varchar(250) NOT NULL, [ldap_adminpwd] varchar(250) NOT NULL, [ldap_autoupdate] int(10) DEFAULT ('0'), [ldap_location] varchar(200) DEFAULT NULL, [ldap_sslX] int(10) DEFAULT 0))SQL? def=CHANGE "ldap_sslX" 'ldap_ssl' INTEGERaction=(change), column=(ldap_sslX), column_escaped=(ldap_sslX)preg_column_definition=(\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++)preg_columns_before=((?:((?:\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++,\s*+)*\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++),\s*+)?)preg_column_to_change=(\s*(?:'ldap_sslX'|ldap_sslX|"ldap_sslX"|`ldap_sslX`|\[ldap_sslX\])(?:\s+int\(10\))?(\s+(?:(?:'(?:[^']*+|'')*+'|[^,'"`\[]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))+)?)CREATE TEMPORARY TABLE 't1384960332' ( [ldapid] INTEGER PRIMARY KEY AUTOINCREMENT, [ldap_server] varchar(100) NOT NULL DEFAULT ('127.0.0.1'), [ldap_port] varchar(10) NOT NULL DEFAULT ('389'), [ldap_dn] varchar(250) NOT NULL DEFAULT ('DC=testserver,DC=danka,DC=de'), [ldap_atdn] varchar(250) NOT NULL DEFAULT ('testserver.danka.de'), [ldap_active] int(10) NOT NULL DEFAULT ('0'), [ldap_addressfieldsactive] int(10) NOT NULL DEFAULT ('1'), [ldap_addressfield1] varchar(255) NOT NULL DEFAULT ('displayname'), [ldap_addressfield2] varchar(255) NOT NULL DEFAULT ('mail'), [ldap_addressfield3] varchar(255) NOT NULL, [ldap_addressfield4] varchar(255) NOT NULL DEFAULT ('department'), [ldap_addressfield5] varchar(255) NOT NULL DEFAULT ('telephonenumber'), [ldap_addressfield6] varchar(255) NOT NULL DEFAULT ('physicaldeliveryofficename'), [ldap_addressfield7] varchar(255) NOT NULL DEFAULT ('l'), [ldap_adminname] varchar(250) NOT NULL, [ldap_adminpwd] varchar(250) NOT NULL, [ldap_autoupdate] int(10) DEFAULT ('0'), [ldap_location] varchar(200) DEFAULT NULL, [ldap_sslX] int(10) DEFAULT 0)CREATE TEMPORARY TABLE 't1384960332' ( [ldapid] INTEGER PRIMARY KEY AUTOINCREMENT, [ldap_server] varchar(100) NOT NULL DEFAULT ('127.0.0.1'), [ldap_port] varchar(10) NOT NULL DEFAULT ('389'), [ldap_dn] varchar(250) NOT NULL DEFAULT ('DC=testserver,DC=danka,DC=de'), [ldap_atdn] varchar(250) NOT NULL DEFAULT ('testserver.danka.de'), [ldap_active] int(10) NOT NULL DEFAULT ('0'), [ldap_addressfieldsactive] int(10) NOT NULL DEFAULT ('1'), [ldap_addressfield1] varchar(255) NOT NULL DEFAULT ('displayname'), [ldap_addressfield2] varchar(255) NOT NULL DEFAULT ('mail'), [ldap_addressfield3] varchar(255) NOT NULL, [ldap_addressfield4] varchar(255) NOT NULL DEFAULT ('department'), [ldap_addressfield5] varchar(255) NOT NULL DEFAULT ('telephonenumber'), [ldap_addressfield6] varchar(255) NOT NULL DEFAULT ('physicaldeliveryofficename'), [ldap_addressfield7] varchar(255) NOT NULL DEFAULT ('l'), [ldap_adminname] varchar(250) NOT NULL, [ldap_adminpwd] varchar(250) NOT NULL, [ldap_autoupdate] int(10) DEFAULT ('0'), [ldap_location] varchar(200) DEFAULT NULL, [ldap_sslX] int(10) DEFAULT 0)/^\s*+(CREATE\s++TEMPORARY\s++TABLE\s++'t1384960332'\s*+\()(?:((?:\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++,\s*+)*\s*+(?:'(?:[^']++|'')++'|[^ '"\[`,]+|"(?:[^"]++|"")++"|`(?:[^`]++|``)++`|\[(?:[^\]]++|\]\])++\])(?:\s+(?:'(?:[^']*+|'')*+'|[^'",`\[ ]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))++),\s*+)?\s*(?:'ldap_sslX'|ldap_sslX|"ldap_sslX"|`ldap_sslX`|\[ldap_sslX\])(?:\s+int\(10\))?(\s+(?:(?:'(?:[^']*+|'')*+'|[^,'"`\[]*|"(?:[^"]*+|"")*+"|`(?:[^`]*+|``)*+`|\[(?:[^\]]*+|\]\])*+\]))+)?(,\s*(.+))?\s*\)\s*$/s ------------------------------------------------------------------------- So I am a little bit confused why the rename sometimes works and sometime not best regards
Reported by
Thomas.Schotz
on 2013-11-20 15:14:41 -
Thanks for the new debug output, I will have a look at it. It is no surprise for me that it sometimes works and sometimes doesn't. It heavily depends on the CREATE TABLE statement of your original table. (And unfortunately also sometimes on the configuration of your server like how big the backtrack limit of pcre is etc.)
Reported by
crazy4chrissi
on 2013-11-20 15:46:19 -
Ok I am currently inspecting the third example which I could reproduce. It seems to be caused by the way the DEFAULT value is put into brackets. In this table: CREATE TABLE [is_ldap2] ( [ldap_server] varchar(100) NOT NULL DEFAULT '127.0.0.1', [ldap_sslX] int(10) DEFAULT 0) It is possible to rename ldap_sslX to ldap_ssl. But in this one: CREATE TABLE [is_ldap3] ( [ldap_server] varchar(100) NOT NULL DEFAULT ('127.0.0.1'), [ldap_sslX] int(10) DEFAULT 0) it is not possible. And this one again works: CREATE TABLE [is_ldap4] ( [ldap_server] varchar(100) NOT NULL DEFAULT ( '127.0.0.1' ), [ldap_sslX] int(10) DEFAULT 0) The problem is that stuff in quotes like '127.0.0.1' is currently only allowed in column constraints of the original CREATE TABLE statement if there is some white space before it. Obviously there is no such rule in SQL as supported by SQLite. I guess it is safe to make the white space here optional. You find a version of phpLiteAdmin attached that should work in the third example. Please check if it does and if you still have similar problems with this version. This version also fixes another problem: Previously, column definitions always needed to define a type or at least "something" additionally. But SQLite does not force you to define a type. So this is legal SQLite SQL: CREATE TABLE test1(a,b,c,d,e,f) In this example you could not for example rename the column c. With the attached version you can. I will also have a look at your first example of post 6. This seems to be another problem. I think maybe other stuff like foreign keys or something like this is involved here but I need to have a closer look at it.
Reported by
crazy4chrissi
on 2013-11-20 17:53:30 - Status changed:Accepted
- Labels added: Target-1.9.5<hr> * Attachment: phpliteadmin.php
-
Account Deleted Hello, thanks a lot for your nice help. For your information. The complete SqLite database was migrated from a MySQL DB. I did this with a convert script. This could be the reason why the default values are in this way
Reported by
Thomas.Schotz
on 2013-11-21 08:24:28 -
Account Deleted Hmmm, I have rechecked the default values if the table is_ldap. But the default value is '172.0.0.1' not ('127.0.0.1'). I do not know why phpLiteAdmin creates the SQL Create with round brackets? I attach a screenshot of the default value
Reported by
Thomas.Schotz
on 2013-11-21 08:32:20<hr> * Attachment: default_value.jpg
-
What you see there are the default values and of course they are withou the brackets. The create table ststatement that is used when altering a table is the one that was used when the table was create. SQLite stores this and we retrieve it for altering. It's no problem that the brackets are there because it is legal sql. So we need to support it. Have you had a try with the ne version?
Reported by
crazy4chrissi
on 2013-11-21 08:38:30 -
Account Deleted I have tested it now with the new version 1.9.5 and now the rename works fine :-) By the way: is it not possible to edit the default values?
Reported by
Thomas.Schotz
on 2013-11-21 11:10:46 -
Sorry for the late reply and thanks for confirming that the change seems to solve your problems. Unfortunately it is not possible to change the default value at the moment. We will make this possible in future versions. I will open a new issue for it.
Reported by
crazy4chrissi
on 2013-12-23 22:26:04 -
I again checked all examples posted in this issue with the current development version and all of them work correctly so I think this issue is fixed.
Reported by
crazy4chrissi
on 2014-01-02 15:42:33 - Status changed:Fixed
- Log in to comment
Reported by
crazy4chrissi
on 2013-11-20 09:53:29