|
|
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
покажите результат вот такого запроса: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2010, 09:29 |
|
||
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovпокажите результат вот такого запроса: Код: plaintext Пусто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2010, 09:58 |
|
||
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
Все, я кажется понял. Спасибо за подсказку про SHOW INNODB STATUS; База переехала недавно с тестового сервера на новый. Так вот на новом сервере, в отличие от прошлого, оказывается включена чувствительность к регистру в названиях таблиц. Все таблицы когда-то были заглавными буквами (наследие Firebird). Потом сделали строчными, но в скриптах не везде в FK поменяли. Ну почему при создании FK нельзя было внятно ругаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2010, 10:13 |
|
||
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
так у вас FK вообще не создавался? Если так - то устанавите что-то типа такого (хотя бы для сессии): Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2010, 10:30 |
|
||
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovтак у вас FK вообще не создавался? В том то и дело, что создавался. Но только при помощи вот такой конструкции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Без SET FOREIGN_KEY_CHECKS=0; ругался, как я в самом начале описал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2010, 11:49 |
|
||
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
miksoftАлександр ГoлдунInnoDB не должен нормально работать с настройками по-умолчанию?По современным меркам - нет.Если БД экспортированная с одного сервера через phpminiadmin не импортируется на другой, выдавая ту самую ошибку 150, то это проблема с настройками mysql сервера? Логично ведь? Не выполняется даже самый первый запрос из sql-файла. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Выдаётся:===================================== 130502 15:22:06 INNODB MONITOR OUTPUT ===================================== Per second averages calculated from the last 24 seconds ---------- SEMAPHORES ---------- OS WAIT ARRAY INFO: reservation count 4, signal count 4 Mutex spin waits 0, rounds 20, OS waits 0 RW-shared spins 8, OS waits 4; RW-excl spins 0, OS waits 0 ------------------------ LATEST FOREIGN KEY ERROR ------------------------ 130502 15:22:02 Error in foreign key constraint of table stimul_db/answers: FOREIGN KEY (`quest_id`) REFERENCES `questions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC: Cannot resolve table name close to: (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC Версия mysql 5.1.69 phpmyadmin в серверных настройках пишет "have innodb YES". В my.cnf написано: автор# Uncomment the following if you are using InnoDB tables innodb_data_home_dir = /var/db/mysql innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /var/db/mysql # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high innodb_buffer_pool_size = 512M innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 128M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2013, 12:36 |
|
||
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
SentokiЕсли БД экспортированная с одного сервера через phpminiadmin не импортируется на другой, выдавая ту самую ошибку 150, то это проблема с настройками mysql сервера? Логично ведь? Не выполняется даже самый первый запрос из sql-файла. Код: sql 1. Нет, не логично. Настройки тут ни причем. Вы при создании первой таблицы сразу пытаетесь ссылаться на другую таблицу, которая, очевидно, в этот момент еще не существует. Варианты: 1) С помощью foreign_key_checks перед созданием таблиц выключить проверку внешних ключей, а после создания, но до добавления данных - включить. 2) Создавать таблицы в таком порядке, чтобы они ссылались только на ранее созданные таблицы. Если есть кольцевые зависимости, то это вариант не пройдет. 3) Создавать таблицы без внешних ключей, а потом добавлять внешние ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2013, 18:25 |
|
||
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
miksoft1) С помощью foreign_key_checks перед созданием таблиц выключить проверку внешних ключей, а после создания, но до добавления данных - включить.Спасибо, это помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2013, 09:25 |
|
||
|
Ошибка 150 при создании внешнего ключа
|
|||
|---|---|---|---|
|
#18+
вот комментарий отсюда http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html котрый мне помог. у меня была проблема в том что у одного из полей небыло UNSIGNED. добавил и заработало. To avoid 'errno: 150' when dealing with integer data types, verify that the primary and foreign key columns of interest have the same integer types (size and sign, as indicated above). e.g. if primary key is 'unsigned int' and foreign key is simply 'int', then 'errno: 150' is likely. Took me a while to debug this! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 14:33 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1831316]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 351ms |

| 0 / 0 |
