powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Пресловутая ошибка errno: 150
34 сообщений из 34, показаны все 2 страниц
Пресловутая ошибка errno: 150
    #35731987
Alex__1981
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Переношу дам базы с одной машины на другую и получаю следующую ошибку:

Код: plaintext
1.
2.
3.
[root@new]# mysql --default-character-set=cp1251 -u root -p mw <./full-mysql-backup.sql                                           
Enter password:
ERROR 1005 (HY000) at line 12: Can't create table './mw/account.frm' (errno: 150)                                          


базу mw на новой машине создавал через phpMyAdmin сравнение указал cp1251, в чем может быть проблема. По форуму искал, но там немного не то.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #35732039
Alex__1981
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex__1981,

Как-то может быть это связано с ключевыми полями в таблицах?
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #35732196
Alex__1981
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex__1981,

Выяснил, что проблема связана с внешними ключами в таблицах

DROP TABLE IF EXISTS account;
CREATE TABLE account (
ID int(11) NOT NULL auto_increment,
Name varchar(100) default '',
PartyID int(11) NOT NULL default '0',
Amount float NOT NULL default '0',
AccountLimit float NOT NULL default '0',
AccountNumber varchar(30) default NULL,
PinCode int(11) default '1111',
Locked int(11) NOT NULL default '0',
AccountingStartDay int(2) default '1',
Number varchar(30) default NULL,
CurrencyID int(11) NOT NULL default '1',
PRIMARY KEY (ID),
KEY XIF1022Account (PartyID),
KEY XIF1129Account (CurrencyID),
CONSTRAINT `account_ibfk_1` FOREIGN KEY (`PartyID`) REFERENCES `party` (`ID`)
CONSTRAINT `account_ibfk_2` FOREIGN KEY (`CurrencyID`) REFERENCES `currency` (`ID`)
) TYPE=InnoDB;

но что в таком случае делать?
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #35733223
Фотография Nick Anikin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex__1981По форуму искал, но там немного не то.что не то? топиков, посвященных errno 150 штук 20, если ни один не подошел, тогда перечисляйте, что пробовали
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #35817102
Alexey Furmanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick AnikinAlex__1981По форуму искал, но там немного не то.что не то? топиков, посвященных errno 150 штук 20, если ни один не подошел, тогда перечисляйте, что пробовали
из 17 найденных наверное в 16ти написано - "попробуйте поискать", рыдал
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #35817172
RXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Furmanov,

Поройся в этой теме:
http://forums.mysql.com/read.php?22,19755,19755
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #35965323
Артем_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex__1981CONSTRAINT `account_ibfk_1` FOREIGN KEY (`PartyID`) REFERENCES `party` (`ID`)
CONSTRAINT `account_ibfk_2` FOREIGN KEY (`CurrencyID`) REFERENCES `currency` (`ID`)
Типы, размер полей PartyID и ID должны быть одинаковыми

тоже и с CurrencyID
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #35992690
сдающийБД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Артем_84Alex__1981CONSTRAINT `account_ibfk_1` FOREIGN KEY (`PartyID`) REFERENCES `party` (`ID`)
CONSTRAINT `account_ibfk_2` FOREIGN KEY (`CurrencyID`) REFERENCES `currency` (`ID`)
Типы, размер полей PartyID и ID должны быть одинаковыми

тоже и с CurrencyID


пасиб чувак! я идиот)))
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36205788
Димитрий_Галин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моей ситуации было так - ссылка в ключе на таблицу с MYISAM - поменял на InnoDB - отработало
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36573181
alz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
alz
Гость
сдающийБДАртем_84Alex__1981CONSTRAINT `account_ibfk_1` FOREIGN KEY (`PartyID`) REFERENCES `party` (`ID`)
CONSTRAINT `account_ibfk_2` FOREIGN KEY (`CurrencyID`) REFERENCES `currency` (`ID`)
Типы, размер полей PartyID и ID должны быть одинаковыми

тоже и с CurrencyID


пасиб чувак! я идиот)))
Пожалуйста, разъясните, что значит одинаковые типв и размеры полей? Если не трудно, покажите правильный запрос в вашем случае. Спасибо.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36573196
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alz,

например
Код: plaintext
1.
INT( 11 ) UNSIGNED
INT( 10 ) UNSIGNED
или
Код: plaintext
1.
INT( 11 ) UNSIGNED
INT( 11 )
- это пары разных полей с точки зрения построения FK.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36884455
У меня Таже проблема вот только данные 100% совпадают
вот к примеру первичный ключ
x1Id BIGINT(18) NOT NULL AUTO_INCREMENT,

а вот поле для связи (внешний ключ)
x2x1Id BIGINT(18) NOT NULL,

Как видно типы данных одинаковы!!
Так в чем же может быть проблема???
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36884466
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филимонов СергейУ меня Таже проблемаОписывайте свою проблему полностью. В этом топике упоминалось несколько вариантов этой проблемы.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36884527
в общем вот более наглядный пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DROP TABLE IF EXISTS XDB.x1;
CREATE TABLE XDB.x1 (
  x1Id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT,
  x1Name VARCHAR( 20 ) NOT NULL,
  PRIMARY KEY (x1Id)
)
TYPE=InnoDB
AUTO_INCREMENT= 1 ;
DROP TABLE IF EXISTS XDB.x2;
CREATE TABLE XDB.x2 (
  x2Id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT,
  x2x1Id BIGINT( 20 ) UNSIGNED NOT NULL,
  x2Name VARCHAR( 20 ) NOT NULL,
  PRIMARY KEY (x2Id), 
   CONSTRAINT FK_X1
              FOREIGN KEY (x2x1Id) REFERENCES x1(x1Id)
)
TYPE=InnoDB
AUTO_INCREMENT= 1 ;
Первая таблица создается без проблем а вот со второй проблемы вылетает ошибка
Can't create table '.\XDB\x2.frm' (errno: 150)

Что еще тут добавить в принципе незнаю.
В общем как можно решить эту проблему
Может это из-за версии MYSQL или еще чего?
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36884537
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филимонов Сергей,

при этом XDB точно является текущей базой?
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36884561
Скорее всего да, хотя даже если нет то вот этот скрипт выдает ту же ошибку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
DROP TABLE IF EXISTS XDB.x1;
CREATE TABLE XDB.x1 (
  x1Id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT,
  x1Name VARCHAR( 20 ) NOT NULL,
  PRIMARY KEY (x1Id)
)
TYPE=InnoDB
AUTO_INCREMENT= 1 ;
DROP TABLE IF EXISTS XDB.x2;
CREATE TABLE XDB.x2 (
  x2Id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT,
  x2x1Id BIGINT( 20 ) UNSIGNED NOT NULL,
  x2Name VARCHAR( 20 ) NOT NULL,
  PRIMARY KEY (x2Id), 
   CONSTRAINT FK_X1
              FOREIGN KEY (x2x1Id) REFERENCES XDB.x1(x1Id)
)
TYPE=InnoDB
AUTO_INCREMENT= 1 ;
Модератор: Пожалуйста, используйте теги для оформления своих постов. Этим вы повысите шансы на получение ответа.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36884744
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филимонов Сергей,

Код: plaintext
1.
2.
3.
4.
5.
6.
SET FOREIGN_KEY_CHECKS =  0 ;
 
ваши запросы
 
SET FOREIGN_KEY_CHECKS =  1 ;

...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36885338
Попробовал так (если я правельно понял)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SET FOREIGN_KEY_CHECKS =  0 ;
 
DROP TABLE IF EXISTS XDB.x1;
CREATE TABLE XDB.x1 (
  x1Id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT,
  x1Name VARCHAR( 20 ) NOT NULL,
  PRIMARY KEY (x1Id)
)
TYPE=InnoDB
AUTO_INCREMENT= 1 ;
DROP TABLE IF EXISTS XDB.x2;
CREATE TABLE XDB.x2 (
  x2Id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT,
  x2x1Id BIGINT( 20 ) UNSIGNED NOT NULL,
  x2Name VARCHAR( 20 ) NOT NULL,
  PRIMARY KEY (x2Id), 
   CONSTRAINT FK_X1
              FOREIGN KEY (x2x1Id) REFERENCES XDB.x1(x1Id)
)
TYPE=InnoDB
AUTO_INCREMENT= 1 ;
 
SET FOREIGN_KEY_CHECKS =  1 ;


Результат все тот же
Can't create table '.\XDB\x2.frm' (errno: 150)
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36886064
Всем спасибо за то что помогли или не помогли в общем НЕ ВАЖНО! А важно то что я нашел решение своей проблемы. Собака была зарыта в версии MYSQL (у меня видимо немного староватая версия но точно незнаю какая). В общем в моей версии прежде чем создавать внешний ключ необходимо было создать индекс к полю для внешнего ключа. Вот и все!
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36886180
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филимонов СергейСобака была зарыта в версии MYSQL (у меня видимо немного староватая версия но точно незнаю какая).Неужели ниже, чем 4.1.2?
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #36886235
да у меня Windows версия 4.0.26-nt-max
мне в принципе больше важена легкость сервера бд.
Данная версия в архивированном виде занимает около 2-3 мегабайт легко устанавливается и настраивается(спокойно устанавливало эту версию тысячи чайников в месте с одной программкой). Единственная и большая проблема это стабильность т.е. если к примеру вырубят свет у пользователя сервер просто напросто вылетает :(. Но это уже другая история :).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Пресловутая ошибка errno: 150
    #37653340
Подобная проблема так же возникает, когда пытаешься поставить foreign key на само поле, например так:

ALTER TABLE `tb` ADD FOREIGN KEY ( `id` ) REFERENCES
`db`.`tb` ( `id` ) ON DELETE NO ACTION ON UPDATE NO ACTION;
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #37653393
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий неизвестныйПодобная проблема так же возникает, когда пытаешься поставить foreign key на само поле, например так:

ALTER TABLE `tb` ADD FOREIGN KEY ( `id` ) REFERENCES
`db`.`tb` ( `id` ) ON DELETE NO ACTION ON UPDATE NO ACTION;Логично, поле не может ссылатьсясамо на себя. Да и смысла в этом нет.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Пресловутая ошибка errno: 150
    #38417973
Mr.Sinister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для этой ошибки может быть несколько причин.
Не считая причину про тип полей:
1. колонка на которую ссылаются (после References она же родительская) не индексирована;
2. не совпадает кодировка (collation) при соединении текстовых полей;
3. при установке дочернего поля в NULL имеющего свойство NOT NULL, при удалении родительской записи;
4. не совпадают кодировки таблиц;
5. поле отсутствует в родительской таблице.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38710492
Леха234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Атрибут "UNSIGNED" у поля у меня не совпадал!
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38790183
Serega-MC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таже ошибка, мой пример.

CREATE TABLE IF NOT EXISTS dev_names
(
num INT NOT NULL AUTO_INCREMENT,
dev_type VARCHAR(15) NOT NULL,
dev_name ENUM('t_sns','l_sns','w_sns','wet_sns','switch','controller') NOT NULL,
PRIMARY KEY (num)
) ENGINE=InnoDB CHARACTER SET=UTF8;

CREATE TABLE IF NOT EXISTS dev_types
(
dev_num INT NOT NULL AUTO_INCREMENT,
dev_id VARCHAR(15) NOT NULL,
dev_type ENUM('t_sns','l_sns','w_sns','wet_sns','switch','controller') NOT NULL,
PRIMARY KEY (dev_num),
FOREIGN KEY (dev_type) REFERENCES dev_names(dev_type)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB CHARACTER SET=UTF8;

Подскажите что неправильно почему возникает эта ошибка ?
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38790269
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega-MCПодскажите что неправильноенум ссылается на варчар
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38794643
Николай Ч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, а что с этим не так? Версия 5.1.53
Моск уже из ушей течет.(((

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `login` varchar(20) NOT NULL DEFAULT '',
  `password` varchar(50) NOT NULL,
  `role` enum('all','trusted') NOT NULL,
  PRIMARY KEY (`id`),
  KEY `login` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


CREATE TABLE IF NOT EXISTS `irb_comments_` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `id_parent` int(5) NOT NULL DEFAULT '0' COMMENT 'users',
  `owner` varchar(250) NOT NULL DEFAULT '',
  `author` varchar(20) NOT NULL DEFAULT '',
  `text` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id_parent` (`id_parent`),
  KEY `owner` (`owner`),
  KEY `author` (`author`),
   FOREIGN KEY (`id_parent`, `author`) REFERENCES `irb_users`(`id`, `login` ) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38794644
Николай Ч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там в первом запросе таблица не та, но не в этом дело, это просто опечатка.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38794696
Николай Ч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил двумя ключами вместо одного составного.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38794716
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай ЧРешил двумя ключами вместо одного составного.Только это логически не эквивалентно.

Подозреваю, не хватало индекса по паре полей (`id`, `login`). Но лучше показывайте полное сообщение об ошибке.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38794976
Николай Ч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оттож! Огромный респект. Всё как обычно просто)))
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38898934
Mysql_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Ошибка та же : ERROR 1005 (HY000) at line 31: Can't create table ' ' (errno: 150)
Код: sql
1.
2.
3.
  FOREIGN KEY (1_id)  REFERENCES table_1 (1_id),
  FOREIGN KEY (2_id)  REFERENCES table_2 (2_id),      
  FOREIGN KEY (3_id)  REFERENCES table_3 (3_id) 



Поля 1,2,3 _id являются первичными в своих таблицах. В третьей таблице лежат внешние ключи, имеющие те же имена и типы. В чём может быть проблема - в совпадении имен?

Заранее спасибо.
...
Рейтинг: 0 / 0
Пресловутая ошибка errno: 150
    #38899423
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mysql_user,

Во-первых, сделайте имена констрейнтов и имена полей разными.
Во-вторых, использовать имена, начинающиеся с цифры - плохая практика, хотя формально и не запрещено. Но если очень хочется - возьмите хотя бы в кавычки `1_id`, чтобы разночтений не возникало.
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Пресловутая ошибка errno: 150
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]