Ask Your Question
1

Problem installing askbot (on mysql)

asked 2012-09-18 07:35:12 -0500

Reef's avatar

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)
edit retag flag offensive 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 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
2

answered 2012-10-05 07:54:52 -0500

Reef's avatar

updated 2012-10-05 07:55:52 -0500

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.

edit flag offensive delete link more

Comments

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

Evgeny's avatar Evgeny  ( 2012-10-05 10:55:11 -0500 )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 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2012-09-18 07:35:12 -0500

Seen: 2,955 times

Last updated: Oct 05 '12