Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 10.12.2017
Сообщений: 16

Не создаётся таблица в MySql

28.11.2018, 23:15. Показов 1362. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Возникла проблема при попытке создать несколько связных таблиц в бд.
В консоли Mysql создаю бд "db_auto".
Захожу в неё.
Через source нахожу файл sql файл для создания таблиц и заполнения их в бд.

MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
USE db_auto;
 
DROP TABLE IF EXISTS `auto`;
CREATE TABLE `auto` (
  `mark` varchar(50) NOT NULL,
  `model` varchar(50) NOT NULL,
  `massa` int NOT NULL,
  `max_speed` int NOT NULL,
  `gass_km` varchar(50) NOT NULL, 
  `price` varchar(50) NOT NULL,
  `code_body` varchar(50) NOT NULL,
  `code_motor` varchar(50) NOT NULL,
  PRIMARY KEY  (`mark`, `model`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `auto`(mark, model, massa, max_speed, gass_km, price, code_body, code_motor) VALUES ('BMW', 'X5', 5100, 260, '7.2 l/km', '2.000.000 uah', 'BMW-X5-B2314', 'BMW-X5-M2314');
INSERT INTO `auto`(mark, model, massa, max_speed, gass_km, price, code_body, code_motor) VALUES ('BMW', 'X6', 5250, 270, '7.0 l/km', '2.600.000 uah', 'BMW-X6-B7639', 'BMW-X6-M7639');
INSERT INTO `auto`(mark, model, massa, max_speed, gass_km, price, code_body, code_motor) VALUES ('AUDI', 'A6', 4700, 250, '8.3 l/km', '1.500.000 uah', 'AUDI-A6-B1092', 'AUDI-A6-M1092');
INSERT INTO `auto`(mark, model, massa, max_speed, gass_km, price, code_body, code_motor) VALUES ('AUDI', 'Q8', 4950, 270, '6.9 l/km', '1.900.000 uah', 'AUDI-Q8-B3065', 'AUDI-Q8-M3065');
INSERT INTO `auto`(mark, model, massa, max_speed, gass_km, price, code_body, code_motor) VALUES ('TOYOTA', 'Camry', 4800, 240, '8.0 l/km', '2.200.000 uah', 'TYT-CMR-B2049', 'TYT-CMR-M2049');
INSERT INTO `auto`(mark, model, massa, max_speed, gass_km, price, code_body, code_motor) VALUES ('TOYOTA', 'Corolla', 4690, 260, '8.5 l/km', '1.200.000 uah', 'TYT-CRL-B0233', 'TYT-CRL-M0233');
 
DROP TABLE IF EXISTS `body`;
CREATE TABLE `body` (
  `code_body` varchar(50) NOT NULL,
  `name` varchar(50) NOT NULL,
  `seat` int NOT NULL,
  `door` int NOT NULL,
  PRIMARY KEY  (`code_body`),
  FOREIGN KEY (`code_body`) REFERENCES `auto` (`code_body`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `body`(code_body, name, seat, door) VALUES ('BMW-X5-B2314', 'Crossover', 7, 5);
INSERT INTO `body`(code_body, name, seat, door) VALUES ('BMW-X6-B7639', 'Crossover', 4, 5);
INSERT INTO `body`(code_body, name, seat, door) VALUES ('AUDI-A6-B1092', 'Sedan', 5, 4);
INSERT INTO `body`(code_body, name, seat, door) VALUES ('AUDI-Q8-B3065', 'Crossover', 5, 5);
INSERT INTO `body`(code_body, name, seat, door) VALUES ('TYT-CMR-B2049', 'Sedan', 5, 4);
INSERT INTO `body`(code_body, name, seat, door) VALUES ('TYT-CRL-B0233', 'Sedan', 5, 4);
 
DROP TABLE IF EXISTS `motor`;
CREATE TABLE `motor` (
  `code_motor` varchar(50) NOT NULL,
  `type_gass` varchar(50) NOT NULL, 
  `volume` varchar(50) NOT NULL,
  `power` varchar(50) NOT NULL,
  PRIMARY KEY  (`code_motor`),
  FOREIGN KEY (`code_motor`) REFERENCES `auto` (`code_motor`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `motor`(code_motor, type_gass, volume, power) VALUES ('BMW-X5-M2314', 'diesel', '400 hp', '3.0 l');
INSERT INTO `motor`(code_motor, type_gass, volume, power) VALUES ('BMW-X6-M7639', 'benzine', '306 hp', '3.0 l');
INSERT INTO `motor`(code_motor, type_gass, volume, power) VALUES ('AUDI-A6-M1092', 'diesel', '231 hp', '2.0 l');
INSERT INTO `motor`(code_motor, type_gass, volume, power) VALUES ('AUDI-Q8-M3065', 'diesel', '286 hp', '2.9 l');
INSERT INTO `motor`(code_motor, type_gass, volume, power) VALUES ('TYT-CMR-M2049', 'benzine', '218 hp', '2.4 l');
INSERT INTO `motor`(code_motor, type_gass, volume, power) VALUES ('TYT-CRL-M0233', 'benzine', '140 hp', '1.8 l');
 
DROP TABLE IF EXISTS `manufs`;
CREATE TABLE `manufs` (
  `manuf` varchar(50) NOT NULL,
  `country` varchar(50) NOT NULL, 
  PRIMARY KEY  (`manuf`),
  FOREIGN KEY (`manuf`) REFERENCES `auto` (`mark`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `manufs`(manuf, country) VALUES ('BMW', 'Germany');
INSERT INTO `manufs`(manuf, country) VALUES ('AUDI', 'Germany');
INSERT INTO `manufs`(manuf, country) VALUES ('TOYOTA', 'Japan');
Таблицы auto и manufs создаются и заполняются успешно. Таблицы body и motor - выдаёт ошибку.
Код ошибки:
Can't create table 'db_auto.body'. Errno: 150.
Can't create table 'db_auto.motor'. Errno: 150.

Искал в интернете причины этой ошибки, пытался исправить - не помогает.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2018, 23:15
Ответы с готовыми решениями:

таблица mysql
Всем привет. Помогите разобраться. Нужно занести через форму на сайте в таблицу test имя и фото. Заносится только имя, а поле фото, в...

Не удаляется таблица MySQL
Ребята не знал кода обратился с данной проблемой, не могу удалить таблицу. Вроде бы делаю все правильно, но почему-то желаемого...

Сводная таблица средствами MySQL
Доброго времени суток! Очень нужны идеи для решения следующей задачи. Предположим имеется таблица различных турниров CREATE TABLE...

5
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
29.11.2018, 15:02
в таблице ауто создали первичный ключ который неиспользуется в таблицах
Цитата Сообщение от Sherlock_hlms Посмотреть сообщение
body и motor
поэтому при связки таблиц невозможно связать не по ключам(вы же не сможете зайти в квартиру без ключа)
SQL
1
2
3
CREATE TABLE `auto` (--------------
PRIMARY KEY  (`mark`,`code_motor`, `code_body`)
------------------------------------------------------------------
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
29.11.2018, 21:07
Цитата Сообщение от DimaxDe Посмотреть сообщение
в таблице ауто создали первичный ключ который неиспользуется в таблицах поэтому при связки таблиц невозможно связать не по ключам(вы же не сможете зайти в квартиру без ключа)
SQL
1
2
3
CREATE TABLE `auto` (--------------
PRIMARY KEY  (`mark`,`code_motor`, `code_body`)
------------------------------------------------------------------
это неверное утверждение



Sherlock_hlms,
навскидку, как минимум нет индекса в родительской таблице. Набор полей, на которые ссылается дочерняя таблица, должен быть проиндексирован (или являться левой частью другого индекса).
полный список причин возникновения ошибки см Ошибки внешних ключей: errno 150, MySQL error 1005 и другие
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
29.11.2018, 22:29
Цитата Сообщение от retvizan Посмотреть сообщение
это неверное утверждение
какое утверждение? считаете если изменить таблицу авто так как я предложил
Цитата Сообщение от retvizan Посмотреть сообщение
PRIMARY KEY *(`mark`,`code_motor`, `code_body`)
не заработает?
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
29.11.2018, 22:51
Цитата Сообщение от DimaxDe Посмотреть сообщение
не заработает?
да, не заработает.
и вы легко можете в этом убедиться, попробовав создать таким образом таблицы (практика - критерий истины)
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
29.11.2018, 22:55
насколько мне известно при создании первичног ключа база автоматом создает на него индекс,да и это не суть..пусть попробует ,скажет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2018, 22:55
Помогаю со студенческими работами здесь

MySQL таблица в оперативной памяти
Добрый вечер. Мне необходимо закешировать строку в MySQL на определенное время. Строка содержет объект типа blob, поэтому стандартным...

Связанная таблица MySQL в базе данных Access
Добрый день. создал связанную таблицу базы данных MySQL в базе данных Access. Только данные в эту связанную таблицу внести не могу. Я...

MySql как узнать что таблица блокирована
Если несколько процессов пытаются писать в одну таблицу (или строку InnoDb), то, как я понимаю, они выстраиваются в очередь.. Можно как-то...

Как узнать какую систему хранения (storage engine) использует конкретная таблица Mysql?
Именно таблица,а не система MySQL . И как изменить тип таблицы? Ибо запрос для изменения типа таблицы на тип--innoDB.а именно--alter...

Не создаётся таблица mysql в php, что может быть не так?
Здравствуйте, что может быть не так, пишет, что мол Ошибка при создании таблицы. Я установил сначала денвер, потом MySQL и в последнем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru