簡體   English   中英

最新發行版上的 Alembic 和 mysql

[英]Alembic and mysql on newest distro

我想在星號服務器上啟用實時配置。 在當前使用 Slackware 的 2021 年,一切正常,但現在使用 Slackware 15 和 Debian 11 我失敗了。

我已經安裝了正確的包,配置並測試了 mariadb 服務器,但是當我嘗試用 alembic 填充表時......在 slackware-15.0 上我得到關於導入 mysql python 模塊的錯誤(package 不支持 python3 作為main 883655808page689 ).

在 Debian 11 我收到這個錯誤

alembic -c config.ini upgrade head
INFO  [alembic.runtime.setup] Testing for an old alembic_version table.
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
/usr/lib/python3/dist-packages/alembic/script/revision.py:152: UserWarning: Revision 43956d550a44 referenced from 43956d550a44 -> 581a4264e537 (head), adding extensions is not present
  util.warn(
Traceback (most recent call last):
  File "/usr/bin/alembic", line 33, in <module>
    sys.exit(load_entry_point('alembic==1.4.3.dev0', 'console_scripts', 'alembic')())
  File "/usr/lib/python3/dist-packages/alembic/config.py", line 581, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/usr/lib/python3/dist-packages/alembic/config.py", line 575, in main
    self.run_cmd(cfg, options)
  File "/usr/lib/python3/dist-packages/alembic/config.py", line 552, in run_cmd
    fn(
  File "/usr/lib/python3/dist-packages/alembic/command.py", line 298, in upgrade
    script.run_env()
  File "/usr/lib/python3/dist-packages/alembic/script/base.py", line 489, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/usr/lib/python3/dist-packages/alembic/util/pyfiles.py", line 98, in load_python_file
    module = load_module_py(module_id, path)
  File "/usr/lib/python3/dist-packages/alembic/util/compat.py", line 184, in load_module_py
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "config/env.py", line 152, in <module>
    run_migrations_online()
  File "config/env.py", line 93, in run_migrations_online
    for x in script.iterate_revisions('head', 'base'):
  File "/usr/lib/python3/dist-packages/alembic/script/revision.py", line 765, in _iterate_revisions
    requested_lowers = self.get_revisions(lower)
  File "/usr/lib/python3/dist-packages/alembic/script/revision.py", line 321, in get_revisions
    resolved_id, branch_label = self._resolve_revision_number(id_)
  File "/usr/lib/python3/dist-packages/alembic/script/revision.py", line 501, in _resolve_revision_number
    self._revision_map
  File "/usr/lib/python3/dist-packages/alembic/util/langhelpers.py", line 230, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "/usr/lib/python3/dist-packages/alembic/script/revision.py", line 156, in _revision_map
    down_revision = map_[downrev]
KeyError: '43956d550a44'

任何解決方案?

edit1:我已經在 opensuse 15.3 上測試過並且一切正常,相關的包是

alembic
python2-alembic
python2-Mako
python2-SQLAlchemy
python2-mysql-connector-python
python2-mysqlclient
python2-python-dateutil
python2-python-editor

找到解決方法。

a) 創建一個 vm,opensuse 15.3,安裝 mariadb,alembic 和所有 deps

alembic
mariadb-server
mariadb-connector-odbc
asterisk
unixODBC
python2-alembic
python2-Mako
python2-SQLAlchemy
python2-mysql-connector-python
python2-mysqlclient
python2-python-dateutil
python2-python-editor

b)在我創建數據庫的虛擬機上

mysql> create database asterisk;
mysql> create user myuser identified by 'password';
mysql> grant all on asterisk.* to myuser identified by 'password';
mysql> flush privileges;

c)然后我下載星號源,解壓到 tmp 文件夾,我在包含目錄 ast-db-manage/ 的目錄中的 go

ast-db-manage/config.ini.sample
cp -av config.ini.sample config.ini
vim config.ini  #set user password...

d) 最后插入表格!

alembic -c config.ini upgrade head

e) 測試連接..

mysql -u myuser -p'password' -D asterisk -e '\s'

f)編輯兩個.ini文件(driver position和file.ini position可以不同,使用locate或find)

vim /etc/odbcinst.ini
[MariaDB]
Driver      = libmaodbc.so
Description = MariaDB ODBC Connector

vim /etc/odbc.ini

[asterisk]
Description = MariaDB Asterisk
Driver = MariaDB
Database = asterisk
Server = localhost
User = myuser
Password = password
Port = 3306
Option = 3

g) 測試 odbc 連接器

isql -vv asterisk

h) 最后轉儲數據庫並在您的 slackware 或 debian 機器上導入

mysqldump -p asterisk > asteriskdb.dump

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM