First time here? Check out the FAQ!
1

Problem installing askbot (on mysql)

I have installed askbot from pip today, then I successfully created an app and invoked python manage.py syncdb, but when I invoked python manage.py migrate askbot, the process has stopped with the following error:

 (...)
 > askbot:0101_megadeath_of_q_a_c
 !!! askbot.askbot_thread is InnoDB - using workarounds !!!
 You are free now to remove content types for Question/Answer/Comment models
 ! Error found during real run of migration! Aborting.

 ! Since you have a database that does not support running
 ! schema-altering statements in transactions, we have had
 ! to leave it in an interim state between migrations.

! You *might* be able to recover with:   = CREATE TABLE `comment` (`comment` varchar(2048) NOT NULL, `offensive_flag_count` integer NOT NULL, `object_id` inte
ger UNSIGNED NOT NULL, `content_type_id` integer NOT NULL, `user_id` integer NOT NULL, `score` integer NOT NULL, `html` varchar(2048) NOT NULL, `added_at` dat
etime NOT NULL, `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY); []
   = CREATE TABLE `answer` (`wiki` bool NOT NULL, `vote_up_count` integer NOT NULL, `text` longtext NULL, `offensive_flag_count` smallint NOT NULL, `summary` varchar(180) NOT NULL, `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `locked_at` datetime NULL, `author_id` integer NOT NULL, `question_id` integer NOT NU
LL, `comment_count` integer UNSIGNED NOT NULL, `score` integer NOT NULL, `vote_down_count` integer NOT NULL, `last_edited_by_id` integer NULL, `deleted` bool NOT NULL, `deleted_at` datetime NULL, `locked` bool NOT NULL, `is_anonymous` bool NOT NULL, `locked_by_id` integer NULL, `html` longtext NULL, `added_at` datetime NOT NULL, `deleted_by_id` integer NULL, `wikified_at` datetime NULL, `last_edited_at` datetime NULL); []
   = CREATE TABLE `question` (`wiki` bool NOT NULL, `vote_up_count` integer NOT NULL, `text` longtext NULL, `offensive_flag_count` smallint NOT NULL, `summary` varchar(180) NOT NULL, `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `locked_at` datetime NULL, `author_id` integer NOT NULL, `comment_count` integer UNSIGNED NOT NULL, `score` integer NOT NULL, `vote_down_count` integer NOT NULL, `last_edited_by_id` integer NULL, `deleted` bool NOT NULL, `deleted_at` datetime NULL, `locked` bool NOT NULL, `thread_id` integer NOT NULL UNIQUE, `is_anonymous` bool NOT NULL, `locked_by_id` integer NULL, `html` longtext NULL, `added_at` datetime NOT NULL, `deleted_by_id` integer NULL, `wikified_at` datetime NULL, `last_edited_at` datetime NULL); []
   = ALTER TABLE `askbot_thread` ADD COLUMN `accepted_answer_post_id` integer NULL; []
   - no dry run output for alter_column() due to dynamic DDL, sorry
   - no dry run output for delete_foreign_key() due to dynamic DDL, sorry
   = ALTER TABLE `askbot_thread` DROP COLUMN `accepted_answer_id` CASCADE; []

 ! The South developers regret this has happened, and would
 ! like to gently persuade you to consider a slightly
 ! easier-to-deal-with DBMS (one that supports DDL transactions)
 ! NOTE: The error which caused the migration to fail is further up.
Error in migration: askbot:0101_megadeath_of_q_a_c
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 220, in execute
    output ...
(more)
Reef's avatar
31
Reef
asked 2012-09-18 07:35:12 -0600
edit flag offensive 0 remove flag close merge delete

Comments

Try switching to MyISAM storage. Askbot won't work with InnoDB as of yet, due to limitation in the search function.

Evgeny's avatar Evgeny (2012-09-22 17:33:58 -0600) edit
add a comment see more comments

1 Answer

2

Apparently You can't run it under InnoDB. To fix it You may drop all the tables, add:

DATABASE_OPTIONS = {'init_command': 'SET storage_engine = MyISAM'}

to Your settings.py, syncdb and migrate. Beware though - if Your MySQL is set to run InnoDB by default and You use replication, then it won't work as intended. On the host where the database is created everything will be fine, but on the replicated side MyISAM will not be forced and replication will break and stop when trying to create tables with fulltext search.

If You don't use replication, You should be fine.

Reef's avatar
31
Reef
answered 2012-10-05 07:54:52 -0600, updated 2012-10-05 07:55:52 -0600
edit flag offensive 0 remove flag delete link

Comments

Hav you tried postgresql? It's much better than MyISAM storage in MySQL.

Evgeny's avatar Evgeny (2012-10-05 10:55:11 -0600) edit

Company policy doesn't allow me to use postgresql, but thanks for the tip.

Reef's avatar Reef (2012-10-12 04:01:45 -0600) edit
add a comment see more comments