Can't uninstall doctrine modules with longblob fields
Closed this issue · 26 comments
By several doctrine2 modules I got the following error during the uninstall:
Error on Site name
Could not load the 'extensions' module at 'remove'.
Unknown database type longblob requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.
You can reproduce it with the ExampleDotrine module. The strange thing is, that there is no longblob column.
I think this is a blocker, because it causes several modules!
Is this in Zikula 1.3.2-dev?
If you have an old module installed that you thought was compatible (that has a longblob) then it confuses Doctrine. You have to change the old (non-doctrine) module.
I think this is related: Guite/MostGenerator#146
https://github.com/zikula/core/blob/master/src/docs/en/dev/upgrading_for_developers.rst
Specificially:
LONGBLOB support
Support for LONGBLOB has been dropped. You must choose another column type and alter it manually with SQL, e.g.
ALTER TABLE workflows CHANGE debug debug LONGTEXT NULL DEFAULT NULL
But way makes ExampleDoctrine problems? There are no longblobs, no old tables. I can not test it in Zikula 1.3.2-dev, because it seems to broken for me.
@phaidon, 1.3.2-dev is not from the master
branch, it's from release-1.3
Hi, I'm using the release-1.3 branch as well and also get this error when uninstalling SimpleMedia. A module from a recent MOST.
Doctrine Exception: Unknown database type longblob requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.
An error was encountered while dropping the tables for the SimpleMedia module.
It is quite annoying since during testing, this makes the uninstall stop halfway and the hooks are not removed and all has to be removed manually.
Hmmhmm...I'm using Zikula 1.3.2 build 50 and no problems like discribed here.
Hi, With MOST modules ? What version of MOST are you using ?
Maybe it has to do with certain datatypes in the MOST application?
I just checked. I don't have any reference to longblob in the module. I'm using MAMP on mac with php 5.3.5 and mysql 5.5.9
With an earlier version of Zikula than build 50 I got the error above also with MOST modules that didn't contain longblob fields.
Now I'm using MOST 0.5.4 and php 5.3.8.
if you have ANY module that has a longblob in the DB you will get this error. It doesn't matter if it is associated with the target module or not. Check all your tables. you will find one.
Aaaah, ok now it's clear :-) thanks, will check ! I have more modules installed and activated indeed.
Did a search on the DB and indeed Mediashare (testing for zk13 compatibility..) had a longblob. Removing that tables solves the issue. Can uninstall fine now, thanks.
So for me this issue is solved.
I found a longblob inside intercom
The problem is still there. What I have done:
- Install Zikula 1.3.2 form http://ci.zikula.org/
- Install my Wikula version (doctrine2 module)
- Remove the module:
Could not load the 'extensions' module at 'remove'.
Unknown database type longblob requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.
The table was created by doctrine. It was a fresh install. There is no longblob in the table!
The problem is also still there by the ExampleDoctrine module.
is there any other module with a longblob field? After deleting the intercom module I could delete my doctrine based module.
Same for me. The longblob field was in another module. It does not have to be in the module you are talking about. Do an export of the full DB and search for longblob...
Just to explain, Doctrine 1 exports the database schema so if there are any longblob
s at all, anywhere, Doctrine 1 will bomb out.
Found one in crpCalendar, too
jamiroconca/crpCalendar#1
Not sure if this is related or not, but it seems suspicious...
I've been fooling around with MOST, and discovered that I couldn't uninstall my apps. I figured it was a problem in my project. However then I installed the example RecipeManager and it does the same thing. Error message:
An error was encountered while dropping the tables for the RecipeManager module.
I then found this thread, and removed Intercom from my installation. However at the end, I get
Error in DBUtil::executeSQL: DELETE FROM WHERE = 'InterCom'
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE = 'InterCom'' at line 1
... it's not referencing a table name.
Now when I try and remove ANY module, including MOST ones, I get the same error with the only difference being the Module name.
1.3?
Yes indeed, 1.3.2.
Sorry Drak, false alarm (sort of). This is related to the Ratings module, which I installed using the latest github source.
The specific issue happens at Ratings/lib/Ratings/EventHandlers.php line 37.
$where = "WHERE $columns[modname] = '" . DataUtil::formatForStore($mod) . "'";
The code builds a query based on $columns[modname], but getTables() delivers the module name in "module", not "modnames".
Each module is looking for hooks to delete here I believe, so the presence of this module will prevent any other module from being completely deleted.
For your Info. There is also an longblob in the Banners Modul