Podejrzewam, ze mysqlowy backup .sql można by jakoś "obrobić" by też pasowało, ale nie znalazłem, żadnego roziwązania.To cały mój zabieg przejścia. Nie wywala błędów.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 :/następnie wczytuję mój obrobiony dump. i odpalam w przeglądarce wersję git. ładnie robi się update bazy i cieszę się postgresem :)ja wczytuję czterokrotnie jeśli chodzi o dira, bo wtedy przestaje walić błędami.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.dalej idę do postgresa.#v-./pozamieniaj lmsdirapg.sql#v+stworzony dump lmsdirapg.sql obrabiam:#v-#v+do obróbki mam dwa skrypty:#v-#v+root@www:/home/mysqlToPg/migracjaDira# cat mysql2pgsql.ymldla DIRA wygląda tak:wyciągnięte tabele wrzucam pod config mysql2pgsql.yml#v-#v+ja robię tak:- wyciągam dane do krotek i tabele la pgsql
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
# 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:
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
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 szybka19 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
_______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms