ja robię tak:

- wyciągam dane do krotek i tabele la pgsql
#v+
cat wyciaganieTabelIkrotek
grep "CREATE SEQUE" /var/www/lms/doc/lms.pgsql | awk -F' ' '{print $3}' | tr '\n' ' ' | tr -d ';' >> sequence
grep "CREATE TABLE" /var/www/lms/doc/lms.pgsql | awk -F' ' '{print "- " $3}' >> mysql2pgsql.yml
#v-

wyciągnięte tabele wrzucam pod config mysql2pgsql.yml
dla DIRA wygląda tak:
#v+root@www:/home/mysqlToPg/migracjaDira# cat mysql2pgsql.yml

# a socket connection will be selected if a 'socket' is specified
# also 'localhost' is a special 'hostname' for MySQL that overrides the 'port' option
# and forces it to use a local socket connection
# if tcp is chosen, you can use compression

mysql:
 hostname: localhost
 port: 3306
 socket: /var/run/mysqld/mysqld.sock
 username: root
 password:
 database: lms
 compress: false
destination:
 # if file is given, output goes to file, else postgres
 file: lmsdirapg.sql
 postgres:
  hostname: localhost
  port:
  username:
  password:
  database:

# if tables is given, only the listed tables will be converted.  leave empty to convert all tables.
#only_tables:
#- table1
#- table2
only_tables:
- users
- customers
- numberplans
- assignments
- cash
- networks
- nodes
- macs
- nodegroups
- nodegroupassignments
- nodeassignments
- tariffs
- liabilities
- payments
- taxes
- documents
- documentcontents
- receiptcontents
- invoicecontents
- debitnotecontents
- numberplanassignments
- customergroups
- customerassignments
- stats
- netlinks
- rtqueues
- rttickets
- rtmessages
- rtnotes
- rtrights
- rtattachments
- passwd
- domains
- records
- supermasters
- aliases
- aliasassignments
- uiconfig
- events
- eventassignments
- sessions
- cashsources
- sourcefiles
- cashimport
- hosts
- daemoninstances
- daemonconfig
- docrights
- cashrights
- cashregs
- cashreglog
- ewx_pt_config
- ewx_stm_nodes
- ewx_stm_channels
- ewx_channels
- netdevices
- dbinfo
- imessengers
- customercontacts
- excludedgroups
- states
- countries
- zipcodes
- divisions
- voipaccounts
- messages
- messageitems
- nastypes
- up_rights
- up_rights_assignments
- up_customers
- up_help
- up_info_changes

#- promotionschemas
#- promotionassignments
#- promotions


# if exclude_tables is given, exclude the listed tables from the conversion.
#exclude_tables:
#- table3
#- table4

# if supress_data is true, only the schema definition will be exported/migrated, and not the data
supress_data: false

# if supress_ddl is true, only the data will be exported/imported, and not the schema
supress_ddl: true

# if force_truncate is true, forces a table truncate before table loading
force_truncate: true

# if timezone is true, forces to append/convert to UTC tzinfo mysql data
timezone: true

# if index_prefix is given, indexes will be created whith a name prefixed with index_prefix
index_prefix:
#v-

do obróbki mam dwa skrypty:
#v+
root@www:/home/mysqlToPg/migracjaDira# cat pozamieniaj
#!/bin/bash

sed -i 's/\tt\t/\t1\t/g' $1
sed -i 's/\tt\t/\t1\t/g' $1
sed -i 's/\tf\t/\t0\t/g' $1
sed -i 's/\tf\t/\t0\t/g' $1
sed -i 's/\tt$/\t1/g' $1
sed -i 's/\tf$/\t0/g' $1


./sequence >> $1
root@www:/home/mysqlToPg/migracjaDira# cat sequence
#!/bin/bash

LISTA_SEQ="users_id_seq customers_id_seq numberplans_id_seq assignments_id_seq cash_id_seq networks_id_seq nodes_id_seq macs_id_seq nodegroups_id_seq nodegroupassignments_id_seq nodeassignments_id_seq tariffs_id_seq liabilities_id_seq payments_id_seq taxes_id_seq documents_id_seq debitnotecontents_id_seq numberplanassignments_id_seq customergroups_id_seq customerassignments_id_seq netlinks_id_seq rtqueues_id_seq rttickets_id_seq rtmessages_id_seq rtnotes_id_seq rtrights_id_seq passwd_id_seq domains_id_seq records_id_seq supermasters_id_seq aliases_id_seq aliasassignments_id_seq uiconfig_id_seq events_id_seq cashsources_id_seq sourcefiles_id_seq cashimport_id_seq hosts_id_seq daemoninstances_id_seq daemonconfig_id_seq docrights_id_seq cashrights_id_seq cashregs_id_seq cashreglog_id_seq ewx_pt_config_id_seq ewx_stm_nodes_id_seq ewx_stm_channels_id_seq ewx_channels_id_seq netdevices_id_seq imessengers_id_seq customercontacts_id_seq excludedgroups_id_seq states_id_seq countries_id_seq zipcodes_id_seq divisions_id_seq voipaccounts_id_seq messages_id_seq messageitems_id_seq nastypes_id_seq up_rights_id_seq up_rights_assignments_id_seq up_customers_id_seq up_help_id_seq up_info_changes_id_seq"
for SEQ in $LISTA_SEQ; do
        KROTKA="id"
        SEQ_TABELA=`echo "$SEQ" | sed 's/_id_seq//'`
        echo "SELECT setval('${SEQ}', coalesce((select max(${KROTKA}) from ${SEQ_TABELA}), 1), true);"
done
#v-

stworzony dump lmsdirapg.sql obrabiam:

#v+
./pozamieniaj lmsdirapg.sql
#v-

dalej idę do postgresa.
tworzę bazę, wczytuję strukturę dira (/var/www/lmsdira/doc/lms.pgsql). W tym pliku trzeba poprawić jedną linijkę, trzeba dodać średnik na końcu linii ale nie pamiętam dokładnie której. jak będziesz próbował wczytać strukturę to psql będzie krzyczał gdzie ma błąd.
ja wczytuję czterokrotnie jeśli chodzi o dira, bo wtedy przestaje walić błędami.

następnie wczytuję mój obrobiony dump. i odpalam w przeglądarce wersję git. ładnie robi się update bazy i cieszę się postgresem :)
robie to wszystko na wiekowym laptopie na wirtualcie. taki upgrade na postgresie robi mi sie 5 minut z zegardkiem a jeśli robie na mysql, to ponad 30 minut :/

To cały mój zabieg przejścia. Nie wywala błędów.
Podejrzewam, ze mysqlowy backup .sql można by jakoś "obrobić" by też pasowało, ale nie znalazłem, żadnego roziwązania.





W dniu 20 września 2015 16:28 użytkownik Sławomir Paszkiewicz <paszczus@gmail.com> napisał:
Dopisałem pozostałe tabele i puściłem, następnie wczytałem dump-a z tego do postgres-a
ale niestety nadal nie działa, tylko nieco inny błąd:

2015-09-20 16:27:05 CEST [2626-1] lms@lms BŁĄD:  operator nie istnieje: boolean = integer przy znaku 70
2015-09-20 16:27:05 CEST [2626-2] lms@lms PODPOWIEDŹ:  Brak operatora pasującego do podanej nazwy i typu(ów) argumentów. Być może należy dodać jawne rzutowanie typów.
2015-09-20 16:27:05 CEST [2626-3] lms@lms WYRAŻENIE:  SELECT section, var, value, description FROM uiconfig WHERE disabled = 0

PS. Po co używałeś pliku sequence? On tworzy tylko selecty. Po co one?

W dniu 2015-09-19 o 16:50, Sławomir Paszkiewicz pisze:
Ok, z czystym configiem (tylko dane do bazy + zapisanie do pliku) idzie. Pododaje tabele i zobaczymy co z tego wyjdzie ;-)

W dniu 2015-09-19 o 16:21, Sławomir Paszkiewicz pisze:
Bez podania normalnie tworzy plik. Spróbuje na podstawie tego pliku + lista tabel od Ciebie + uaktualnienie do wersji GIT.

W dniu 2015-09-19 o 16:19, Marcin pisze:

Odpal na początku bez podania pliku configu,  powinien go stworzyć,  czy też wali błędami?

19 wrz 2015 16:17 "Sławomir Paszkiewicz" <paszczus@gmail.com> napisał(a):
# pip install py-mysql2pgsql
Downloading/unpacking py-mysql2pgsql
  Downloading py-mysql2pgsql-0.1.5.tar.gz (109kB): 109kB downloaded
  Running setup.py (path:/tmp/pip-build-gzgg3k/py-mysql2pgsql/setup.py) egg_info for package py-mysql2pgsql

    warning: no previously-included files matching '*.pyc' found under directory '*'
    warning: no previously-included files matching '*.pyo' found under directory '*'
    warning: no previously-included files matching '*.yml' found under directory '*'
    warning: no previously-included files matching '*.DS_Store' found under directory '*'
    warning: no previously-included files matching '*.coverage' found under directory '*'
    no previously-included directories found matching 'tests/reports'
Requirement already satisfied (use --upgrade to upgrade): mysql-python>=1.2.3 in /usr/local/lib/python2.7/dist-packages (from py-mysql2pgsql)
Requirement already satisfied (use --upgrade to upgrade): psycopg2>=2.4.2 in /usr/local/lib/python2.7/dist-packages (from py-mysql2pgsql)
Requirement already satisfied (use --upgrade to upgrade): pyyaml>=3.10.0 in /usr/local/lib/python2.7/dist-packages (from py-mysql2pgsql)
Requirement already satisfied (use --upgrade to upgrade): argparse in /usr/lib/python2.7 (from py-mysql2pgsql)
Requirement already satisfied (use --upgrade to upgrade): termcolor>=1.1.0 in /usr/local/lib/python2.7/dist-packages (from py-mysql2pgsql)
Installing collected packages: py-mysql2pgsql
  Running setup.py install for py-mysql2pgsql
    changing mode of build/scripts-2.7/py-mysql2pgsql from 644 to 755

    warning: no previously-included files matching '*.pyc' found under directory '*'
    warning: no previously-included files matching '*.pyo' found under directory '*'
    warning: no previously-included files matching '*.yml' found under directory '*'
    warning: no previously-included files matching '*.DS_Store' found under directory '*'
    warning: no previously-included files matching '*.coverage' found under directory '*'
    no previously-included directories found matching 'tests/reports'
    changing mode of /usr/local/bin/py-mysql2pgsql to 755
Successfully installed py-mysql2pgsql
Cleaning up...


W dniu 2015-09-19 o 16:16, Sławomir Paszkiewicz pisze:
uzyłem pip-a, zaciągnął co potrzebował i napisał, że instalacja się powiodła.

W dniu 2015-09-19 o 16:15, Marcin pisze:

Czy instalowałes to zgodnie z opisem tego na githubie? Podejrzewam, że czegoś brakuje. Mi wywołało błędy Pythona jeśli nie było wymaganych paczek

19 wrz 2015 16:12 "Sławomir Paszkiewicz" <paszczus@gmail.com> napisał(a):
W 7 linii mam:

mysql:


a cały początek wygląda tak:

# a socket connection will be selected if a 'socket' is specified
# also 'localhost' is a special 'hostname' for MySQL that overrides
the 'port' option
# and forces it to use a local socket connection
# if tcp is chosen, you can use compression

mysql:
 hostname: 1.3.4
 port: 3306
 username: lms-migrate
 password: secret
 database: lms
 compress: false
destination:
 # if file is given, output goes to file, else postgres
 file: lms_pg.sql
 postgres:
  hostname: localhost
  port: 5432
  username: lms
  password: secret
  database: lms


W dniu 2015-09-19 o 16:10, Marcin pisze:

Aktualizacja tabel to chyba nie problem.
Co masz w 7 linii configu?

19 wrz 2015 16:08 "Sławomir Paszkiewicz" <paszczus@gmail.com> napisał(a):
Tak, próbowałem tą Twoją wersją, która pewnie już jest trochę nieaktualna (doszły nowe tabele) no ale tak czy inaczej jest błąd na starcie:

Traceback (most recent call last):
  File "/usr/local/bin/py-mysql2pgsql", line 38, in <module>
    mysql2pgsql.Mysql2Pgsql(options).convert()
  File "/usr/local/lib/python2.7/dist-packages/mysql2pgsql/mysql2pgsql.py", line 18, in __init__
    self.file_options = Config(options.file, True).options
  File "/usr/local/lib/python2.7/dist-packages/mysql2pgsql/lib/config.py", line 33, in __init__
    super(Config, self).__init__(config_file_path)
  File "/usr/local/lib/python2.7/dist-packages/mysql2pgsql/lib/config.py", line 18, in __init__
    self.options = load(open(config_file_path))
  File "/usr/local/lib/python2.7/dist-packages/yaml/__init__.py", line 71, in load
    return loader.get_single_data()
  File "/usr/local/lib/python2.7/dist-packages/yaml/constructor.py", line 37, in get_single_data
    node = self.get_single_node()
  File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 39, in get_single_node
    if not self.check_event(StreamEndEvent):
  File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
  File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 174, in parse_document_start
    self.peek_token().start_mark)
yaml.parser.ParserError: expected '<document start>', but found '<block mapping start>'
  in "mysql2pgsql.yml", line 7, column 1


W dniu 2015-09-19 o 16:06, Marcin pisze:

Trochę pomieszane z bazami. W historii mailing listy wrzucałem step by step o przesiadce.
Teraz u siebie na virtual mam zrobioną przesiadke w dira bo upgrade bazy trwa 5min na psql a ponad 20 na MySQL a virtual nie jest szybka

19 wrz 2015 16:01 "Sławomir Paszkiewicz" <paszczus@gmail.com> napisał(a):
Teraz na stronie mam:

Catchable fatal error: Argument 1 passed to ConfigLoader::parseRawConfig() must be of the type array, null given, called in /usr/share/lms/lib/LMSConfig/ConfigLoader.php on line 51 and defined in /usr/share/lms/lib/LMSConfig/ConfigLoader.php on line 105

a w logach postgres:

2015-09-19 16:01:23 CEST [2787-1] lms@lms BŁĄD:  tabela "plicbdoperators" nie istnieje
2015-09-19 16:01:23 CEST [2787-2] lms@lms WYRAŻENIE:
                DROP TABLE plicbdlocalisation;
                DROP TABLE plicbdoperators;

2015-09-19 16:01:23 CEST [2787-3] lms@lms BŁĄD:  bieżąca transakcja została przerwana, polecenia ignorowane do końca bloku transakcji
2015-09-19 16:01:23 CEST [2787-4] lms@lms WYRAŻENIE:  UPDATE dbinfo SET keyvalue = '2015091300' WHERE keytype = 'dbversion'
2015-09-19 16:01:23 CEST [2787-5] lms@lms BŁĄD:  operator nie istnieje: boolean = integer przy znaku 70
2015-09-19 16:01:23 CEST [2787-6] lms@lms PODPOWIEDŹ:  Brak operatora pasującego do podanej nazwy i typu(ów) argumentów. Być może należy dodać jawne rzutowanie typów.
2015-09-19 16:01:23 CEST [2787-7] lms@lms WYRAŻENIE:  SELECT section, var, value, description FROM uiconfig WHERE disabled = 0


W dniu 2015-09-19 o 16:00, Sławomir Paszkiewicz pisze:
No wkleiłem wynik phpinfo() więc widać, że ten moduł jest.
Ale okej, poradziłem sobie - musiałem zmienić wpis w pg_hba.conf dla local z peer na md5.


W dniu 2015-09-19 o 15:55, Marcin pisze:

To nie kwestia lmsa, to PHP. Zainstaluj php5-psql coś w tym rodzaju. Piszę z pamięci

19 wrz 2015 15:53 "Sławomir Paszkiewicz" <paszczus@gmail.com> napisał(a):
Witam,

Testowo próbuje uruchomić LMS-a na nginx i postgresql - do tej pory był apache + mysql.

Zrobiłem import bazy, uporałem się z problemem z php5-fpm ale teraz po wejściu na stronę LMS dostaje:

Warning: PHP Driver for "postgres" database doesn't seems to be loaded. in /usr/share/lms/index.php on line 89
Fatal error: cannot connect to database!

A sam moduł jest zainstalowany, phpinfo pokazuje:

pdo_pgsql

PDO Driver for PostgreSQL enabled
PostgreSQL(libpq) Version 9.4.4
Module version 1.0.2
Revision $Id: 93432550a76a2298959ec74f40d65c7195a82ad2 $

pgsql

PostgreSQL Support enabled
PostgreSQL(libpq) Version 9.4.4
PostgreSQL(libpq) PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
Multibyte character support enabled
SSL support enabled
Active Persistent Links 0
Active Links 0

Ktoś się spotkał z takim problemem? LMS wersja git z dnia dzisiejszego.


_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms



_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms



_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms



_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms


_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms



_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms


_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms



_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms



_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms



_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms




_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms




--
Pozdrawiam
Marcin / nicraM