Size: a a a

2020 May 27

NI

Nickolay Ihalainen in ru_mysql
в идеале 3 sql строчки, одна на одну табличку, одна на вторую и alter
источник

AO

Alex Ostroverkhov in ru_mysql
Nickolay Ihalainen
идеально не использовать PK, можно попробовать поменять сначала в table2, а потом в table1
да, попробую с них начать
источник

NI

Nickolay Ihalainen in ru_mysql
чтобы можно было в других версиях затестить и зарепортить хотя бы на 5.6, в котором будут чинить багу
источник

АМ

Арсений Мамаев... in ru_mysql
Сорян. Подумал это мне 😊
источник

NI

Nickolay Ihalainen in ru_mysql
Арсений Мамаев
Сорян. Подумал это мне 😊
select @@wait_timeout;
источник

NI

Nickolay Ihalainen in ru_mysql
бекап отваливается после большего количества секунд?
источник

AO

Alex Ostroverkhov in ru_mysql
Nickolay Ihalainen
в идеале 3 sql строчки, одна на одну табличку, одна на вторую и alter
можно комментарий что за 3 строчки?
я подумал, что сначала alter table2; а затем alter table1;
но такой вариант тоже не проходит
источник

АМ

Арсений Мамаев... in ru_mysql
Nickolay Ihalainen
бекап отваливается после большего количества секунд?
Нет. Но если изменить тайм аут, тоже отваливается, уже через этот тайминг. Всегда на одной и той же строке. Пытался чинить эту строку, тоже бесполезно. Таблицу в режим чтения переводил до 6.
источник

NI

Nickolay Ihalainen in ru_mysql
Alex Ostroverkhov
можно комментарий что за 3 строчки?
я подумал, что сначала alter table2; а затем alter table1;
но такой вариант тоже не проходит
для бага нужно create table table1 ..  ; create table table2 ... ; SET FOREIGN_KEY_CHECKS=0; alter ...;
источник

NI

Nickolay Ihalainen in ru_mysql
Арсений Мамаев
Нет. Но если изменить тайм аут, тоже отваливается, уже через этот тайминг. Всегда на одной и той же строке. Пытался чинить эту строку, тоже бесполезно. Таблицу в режим чтения переводил до 6.
тогда поднять max_allowed_packet и на mysqldump и на серваке
источник

АМ

Арсений Мамаев... in ru_mysql
Nickolay Ihalainen
тогда поднять max_allowed_packet и на mysqldump и на серваке
10G ставил. Тоже ноль эффекта.
источник

NI

Nickolay Ihalainen in ru_mysql
set global max_allowed_packet=1073741824;
mysqldump ... --max_allowed_packet=1073741824 ....
источник

NI

Nickolay Ihalainen in ru_mysql
10G не катит, 1GB лимит
источник

АМ

Арсений Мамаев... in ru_mysql
Nickolay Ihalainen
10G не катит, 1GB лимит
Точно, он режит их. В консоле об этом писал, но я тот ещё читатель)
источник

AO

Alex Ostroverkhov in ru_mysql
Nickolay Ihalainen
для бага нужно create table table1 ..  ; create table table2 ... ; SET FOREIGN_KEY_CHECKS=0; alter ...;
так и есть:
Server version: 5.5.61-38.13 Percona Server (GPL), Release 38.13, Revision 812705b

mysql> CREATE TABLE table1 (
   ->     id int(11) NOT NULL AUTO_INCREMENT,
   ->     PRIMARY KEY (id)
   -> ) ENGINE=InnoDB AUTO_INCREMENT=1238576152 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE table2 (
   ->     id int(11) NOT NULL AUTO_INCREMENT,
   ->     external_id int(11) NOT NULL,
   ->     PRIMARY KEY (id),
   ->     CONSTRAINT FK_table2_123 FOREIGN KEY (external_id) REFERENCES table1 (id)
   -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO table1 (id) VALUES (123);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO table2 (id, external_id) VALUES (1, 123);
Query OK, 1 row affected (0.01 sec)

mysql> SET FOREIGN_KEY_CHECKS=0;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER TABLE table1 MODIFY id BIGINT NOT NULL AUTO_INCREMENT;
ERROR 1025 (HY000): Error on rename of './/#sql-1_15c' to './/table1' (errno: 150)
mysql> SHOW ENGINE INNODB STATUS;

------------------------
LATEST FOREIGN KEY ERROR
------------------------
200527 19:03:00 Error in foreign key constraint of table /table2:
there is no index in referenced table which would contain
the columns as the first columns, or the data types in the
referenced table do not match the ones in table. Constraint:
,
 CONSTRAINT "FK_table2_123" FOREIGN KEY ("external_id") REFERENCES "table1" ("id")
The index in the foreign key in table is "FK_table2_123"
See http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
for correct foreign key definition.
--------
источник

NI

Nickolay Ihalainen in ru_mysql
на 5.7 тоже не работает, сделайте репорт на bugs.mysql.com
источник

NI

Nickolay Ihalainen in ru_mysql
походу только дропать FK, альтерить и создавать заново
источник

NI

Nickolay Ihalainen in ru_mysql
ну или перезалить из логического
источник

GK

Grigori Kochanov in ru_mysql
это by design
When foreign_key_checks is disabled, foreign key constraints are ignored, with the following exceptions:
The table must have the correct column names and types.
Altering a table returns an error (errno: 150) if a foreign key definition is incorrectly formed for the altered table.
источник

GK

Grigori Kochanov in ru_mysql
rtfm, прежде чем заводить багу
https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
источник