Ошибка 3734 mysql

Hi there sorry if this is a stupid question but I’m new to sql, getting the error 3734

CREATE TABLE orderDetails (
orderNumber INT (10) NOT NULL,
quantityOrdered int(10) NOT NULL,
priceEach decimal (10,2) NOT NULL,
orderLineNumber INT (10) NOT NULL,
productCode VARCHAR(100) NOT NULL,
PRIMARY KEY (orderNumber),
KEY productCode (productCode),
CONSTRAINT orderdetails_asdf_1 FOREIGN KEY (productCode) 
REFERENCES product (productCode)
ON UPDATE CASCADE
);

CREATE TABLE product (
productCode VARCHAR(100) NOT NULL,
orderNumber INT NOT NULL,
orderDate DATE NOT NULL,
requiredDate DATE NOT NULL,
shippedDate DATE NOT NULL,
orderStatus varchar(10) NOT NULL,
Comments VARCHAR(100) NOT NULL,
customerNumber INT NOT NULL,
PRIMARY KEY (orderNumber),
KEY productCode (productCode),
CONSTRAINT orderdetails_asdf_1 FOREIGN KEY (productCode) 
REFERENCES orderDetails (productCode)
ON UPDATE CASCADE
) ;

Error code 3734, Failed to add the foreign key constraint. Missing column productCode for constraint orderDetails_asdf_1 in the referenced table ‘product’

Я работаю над MySQL WorkBench и все время получаю код ошибки 3734: не удалось добавить ограничение внешнего ключа. Что означает эта ошибка и могу ли я исправить эту ошибку? Я все время получаю ошибку с таблицей бронирования вилл.

     create table Reservation
(
ReservationID char(5) primary key,
ReservationDate date,
CustomerID char(5),
foreign key (CustomerID) references Customer (CustomerID)
);

create table Villa
(
VillaID char(5) primary key,
VillaName varchar(40),
VillaCostPerDay int(3), 
VillaTypeID char(5),
foreign key (VillaTypeID) references VillaType (VillaTypeID)
);

``create table VillaReservation
    (
    VillaReservationID char(5),
    VillaID char(5),
    DateFrom datetime,
    DateTo datetime,
    primary key (VillaReservationID, VillaID),
    foreign key (VillaReservationID) references Reservation(VillaReservationID),
    foreign key (VillaID) references Villa(VillaID)
    );

#mysql

#mysql

Вопрос:

Работаю над небольшой базой данных, собирающей новые версии в разных странах. Все работало нормально, пока я не изменил название Country на countryRel . он начал выдавать этот код ошибки Код ошибки: 3734.

Я уже перепробовал большинство других онлайн-справок, которые я могу найти (например, сделать первичный ключ уникальным), а также возился с переменными (добавляя новые или удаляя их, чтобы увидеть, что изменилось, обычно это просто выдает эту ошибку Код ошибки: 1822) Я поместил свой кодвозвращаясь к тому, как я хочу, я бы в основном хотел, чтобы это осталось. есть идеи?

 create table countries ( counId int unique, countryName varchar(15), primary key(counId));
insert into countries Values (1, 'Japan'),(2, 'America'),(3,'England'),(4,'Germany'),(5,'Canada'),(6,'China');
select * from countries;

drop table countryRel;

create table countryRel (novelId int, counId int, releaseDate date, foreign key(novelId) references 
Lightnovel(novelId), foreign key(counId) references countries(counId));
insert into countryRel values (1, 1, '2019-1-17'),(2, 1, '2019-1-17'),(3, 1, '2019-5-17'),(4, 1, '2019-1-17'),
(5, 1, '2019-1-17'),(6, 1, '2019-1-01'),(7, 1, '2019-1-01'),(8, 1, '2019-2-09'),(9, 1, '2019-2-09'),(1, 2, '2019-9-17'),
(2, 2, '2019-9-20'),(3, 2, '2019-10-10'),(4, 2, '2019-11-21'),(5, 2, '2019-8-04'),(6, 2, '2019-08-04'),
(7, 2, '2019-1-01'),(8, 2, '2019-11-21'),(9, 2, '2019-9-14'),(1, 3, '2019-9-17'),(2, 3, '2019-9-20'),
(3, 3, '2019-10-10'),(4, 3, '2019-11-21'),(5, 3, '2019-8-04'),(6, 3, '2019-08-04'),(7, 3, '2019-1-01'),
(8, 3, '2019-11-21'),(9, 3, '2019-9-14');
  

Это должно создать небольшой список таблиц из 1-6 перечисленных стран. Затем, используя counId в качестве основного модуля, передайте его в CountryRel для использования в перечисленных таблицах.

Комментарии:

1. Вам необходимо создать Lightnovel таблицу, прежде чем вы сможете создать countryRel таблицу dbfiddle.uk /…

2. мой плохой, я поделился только тем, что было подходящим кодом, у меня есть таблица lightnovel, и я не чувствовал, что это поможет в этом обсуждении.

3. здесь: создайте таблицу Lightnovel (authId int, novelId int, ТЕКСТ заголовка, ТЕКСТ описания, издатель varchar(45), дата выпуска, первичный ключ (novelId), внешний ключ (authId) ссылается на автора (authId));

4. Это не помогает, поскольку ссылается на другую таблицу author , для которой вы не дали определения. Мы не сможем помочь вам решить вашу проблему, если вы не предоставите нам всю необходимую информацию.

5. создайте таблицу author(authId int, FirstName varchar(30), LastName varchar(30), nationality varchar(15), дата первого выпуска, booknum int, первичный ключ (authId));

Ответ №1:

Я проверил и обнаружил, что вы добавляете 2 внешних ключа, но вы не отправили определение таблицы для второго (Lightnovel), если я удаляю этот сценарий внешнего ключа, он работает нормально. Пожалуйста, добавьте таблицу Lightnovel, тогда все будет работать нормально.

Комментарии:

1. все еще пытаюсь найти лучший способ использовать систему комментариев переполнения стека (с двумя из них) вот моя таблица, я не добавил ее в эту тему, потому что я не чувствовал, что это уместно для обсуждения (моя ошибка): here: create table Lightnovel (authId int, novelId int, titleТЕКСТ, описание ТЕКСТА, издатель varchar(45), дата выпуска, первичный ключ (novelId), внешний ключ (authId) ссылается на автора (authId));

SQLSTATE[HY000]: General error: 3734 Failed to add the foreign key constraint. Missing column 'id' for constraint 'posts_user_id_foreign' in the referenced table 'users' (SQL: alter table `posts` add constraint `posts_user_id_foreign` foreign key (`user_id`) references `users` (`id`))

  at D:\multimedia-projects-main (1)\multimedia-projects-main\jobsearch\vendor\laravel\framework\src\Illuminate\Database\Connection.php:761
    757▕         // If an exception occurs when attempting to run a query, we'll format the error
    758▕         // message to include the bindings with SQL, which will make this exception a
    759▕         // lot more helpful to the developer instead of just the database's errors.
    760▕         catch (Exception $e) {
  ➜ 761▕             throw new QueryException(
    762▕                 $query, $this->prepareBindings($bindings), $e
    763▕             );
    764▕         }
    765▕     }

  1   D:\multimedia-projects-main (1)\multimedia-projects-main\jobsearch\vendor\laravel\framework\src\Illuminate\Database\Connection.php:546
      PDOException::("SQLSTATE[HY000]: General error: 3734 Failed to add the foreign key constraint. Missing column 'id' for constraint 'posts_user_id_foreign' in the referenced table 'users'")

  2   D:\multimedia-projects-main (1)\multimedia-projects-main\jobsearch\vendor\laravel\framework\src\Illuminate\Database\Connection.php:546
      PDOStatement::execute()

my code look like this for the foreign
public function up()

    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id('post_id')->unique()->nullable(false);
            $table->biginteger('user_id')->unasigned()->index();         
            $table->biginteger('company_id')->unasigned()->index();          
            $table->biginteger('job_id')->unasigned()->index();          
            $table->timestamps();
        });
        Schema::table('posts', function($table) {
            $table->foreign('user_id')->references('id')->on('users');
            $table->foreign('company_id')->references('id')->on('companies');
             $table->foreign('job_id')->references('id')->on('jobs');
        });
    }

this is for the user

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id('user_id');
            $table->string('name');
            $table->string('email')->unique();
            $table->foreignid('companyid');
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

the rest is similar

already try to change the foreign key into big integer and to integer already try to change the name of the foreign reference but still not working

asked Apr 3 at 15:22

shandy pet's user avatar

If you pass a parameter in $schema->id() function, the column will be named with given parameter.

In your code you have renamed id columns in users table.
Don’t use $table->id('user_id');, instead use $table->id(); and this will generate column named id.

Or, if you want to name primary key column in users table as user_id, then you must change how you set foreign key:

Schema::table('posts', function($table) {
    ...
    $table->foreign('user_id')->references('user_id')->on('users');
    ...
});

answered Apr 3 at 16:33

Malkhazi Dartsmelidze's user avatar

1

Работаю над небольшой базой данных, собирающей новые версии в разных странах. Все работало нормально, пока я не изменил название Country на countryRel . он начал выдавать этот код ошибки Код ошибки: 3734.

Я уже перепробовал большинство других онлайн-справок, которые я могу найти (например, сделать первичный ключ уникальным), а также возился с переменными (добавляя новые или удаляя их, чтобы увидеть, что изменилось, обычно это просто выдает эту ошибку Код ошибки: 1822) Я поместил свой кодвозвращаясь к тому, как я хочу, я бы в основном хотел, чтобы это осталось. есть идеи?

 create table countries ( counId int unique, countryName varchar(15), primary key(counId));
insert into countries Values (1, 'Japan'),(2, 'America'),(3,'England'),(4,'Germany'),(5,'Canada'),(6,'China');
select * from countries;

drop table countryRel;

create table countryRel (novelId int, counId int, releaseDate date, foreign key(novelId) references 
Lightnovel(novelId), foreign key(counId) references countries(counId));
insert into countryRel values (1, 1, '2019-1-17'),(2, 1, '2019-1-17'),(3, 1, '2019-5-17'),(4, 1, '2019-1-17'),
(5, 1, '2019-1-17'),(6, 1, '2019-1-01'),(7, 1, '2019-1-01'),(8, 1, '2019-2-09'),(9, 1, '2019-2-09'),(1, 2, '2019-9-17'),
(2, 2, '2019-9-20'),(3, 2, '2019-10-10'),(4, 2, '2019-11-21'),(5, 2, '2019-8-04'),(6, 2, '2019-08-04'),
(7, 2, '2019-1-01'),(8, 2, '2019-11-21'),(9, 2, '2019-9-14'),(1, 3, '2019-9-17'),(2, 3, '2019-9-20'),
(3, 3, '2019-10-10'),(4, 3, '2019-11-21'),(5, 3, '2019-8-04'),(6, 3, '2019-08-04'),(7, 3, '2019-1-01'),
(8, 3, '2019-11-21'),(9, 3, '2019-9-14');
  

Это должно создать небольшой список таблиц из 1-6 перечисленных стран. Затем, используя counId в качестве основного модуля, передайте его в CountryRel для использования в перечисленных таблицах.

1. Вам необходимо создать Lightnovel таблицу, прежде чем вы сможете создать countryRel таблицу dbfiddle.uk /…

2. мой плохой, я поделился только тем, что было подходящим кодом, у меня есть таблица lightnovel, и я не чувствовал, что это поможет в этом обсуждении.

3. здесь: создайте таблицу Lightnovel (authId int, novelId int, ТЕКСТ заголовка, ТЕКСТ описания, издатель varchar(45), дата выпуска, первичный ключ (novelId), внешний ключ (authId) ссылается на автора (authId));

4. Это не помогает, поскольку ссылается на другую таблицу author , для которой вы не дали определения. Мы не сможем помочь вам решить вашу проблему, если вы не предоставите нам всю необходимую информацию.

5. создайте таблицу author(authId int, FirstName varchar(30), LastName varchar(30), nationality varchar(15), дата первого выпуска, booknum int, первичный ключ (authId));

Я проверил и обнаружил, что вы добавляете 2 внешних ключа, но вы не отправили определение таблицы для второго (Lightnovel), если я удаляю этот сценарий внешнего ключа, он работает нормально. Пожалуйста, добавьте таблицу Lightnovel, тогда все будет работать нормально.

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Ошибка 3730 mysql
  • Ошибка 3726 sql
  • Ошибка 3709 access
  • Ошибка 3725 sql
  • Ошибка 3714 газель камминз

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии