laravel - 导入sql表显示,外键约束形成错误,laravel迁移制作的表
问题描述
在 Laravel 迁移中,一切正常。但是当我导出这个表并导入新数据库时,这个表显示外键约束的格式不正确。
销售.sql
-- phpMyAdmin SQL Dump
-- version 4.9.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Jul 05, 2020 at 08:19 PM
-- Server version: 10.4.8-MariaDB
-- PHP Version: 7.3.11
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `inventory_management`
--
-- --------------------------------------------------------
--
-- Table structure for table `sales`
--
CREATE TABLE `sales` (
`id` bigint(20) UNSIGNED NOT NULL,
`sales_no` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`reference` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`date` date NOT NULL,
`sub_total` double NOT NULL,
`discount` double NOT NULL,
`discount_type` enum('percent','amount') COLLATE utf8mb4_unicode_ci NOT NULL,
`tax` double NOT NULL,
`tax_type` enum('percent','amount') COLLATE utf8mb4_unicode_ci NOT NULL,
`grand_total` double NOT NULL,
`payment_type` enum('no-payment','partial-payment','full-payment') COLLATE utf8mb4_unicode_ci NOT NULL,
`payment_term_id` bigint(20) UNSIGNED DEFAULT NULL,
`notes` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_by` bigint(20) UNSIGNED NOT NULL,
`updated_by` bigint(20) UNSIGNED NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
`status` enum('paid','void','cancelled','overdue','unpaid') COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`customer_id` bigint(20) UNSIGNED DEFAULT NULL,
`is_item_wise_discount` enum('0','1') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0',
`is_item_wise_tax` enum('0','1') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `sales`
--
ALTER TABLE `sales`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `sales_sales_no_unique` (`sales_no`),
ADD KEY `sales_payment_term_id_index` (`payment_term_id`),
ADD KEY `sales_created_by_index` (`created_by`),
ADD KEY `sales_updated_by_index` (`updated_by`),
ADD KEY `sales_customer_id_index` (`customer_id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `sales`
--
ALTER TABLE `sales`
MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=35;
--
-- Constraints for dumped tables
--
--
-- Constraints for table `sales`
--
ALTER TABLE `sales`
ADD CONSTRAINT `sales_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `sales_customer_id_foreign` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `sales_payment_term_id_foreign` FOREIGN KEY (`payment_term_id`) REFERENCES `payment_terms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `sales_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;
但是一切工作正常,当我改变表并做 php artisan 迁移时。有用。唯一的问题是在新数据库中导出表和导入表时。先感谢您
解决方案
您是只迁移一张表还是迁移所有数据库?如果它只有一个表,请确保其他表存在于新数据库中,并且父表具有其他表所需的信息。让我说如果您正在迁移sales.sql
并且它的信息取决于用户说(它有一个users_id
),那么新数据库中必须有用户表。还要注意您在两个表中关联的列值的数据类型。
推荐阅读
- javascript - 如何在 JS 类中定义私有方法
- java - 错误“java.lang.ClassNotFoundException”阻止我运行应用程序
- https - 我们由 Route53 管理的 www.ourdomain.com 未解析为 https
- python - 手势检测应该使用什么网络
- php - SQL 查询结果的 PHP IF 条件
- azure - 连接到在 azure 上运行的 jenkins 容器
- redis - 为什么 redis pubsub 工作独立于数据库?
- html - 为什么这个“res.redirect()”不重定向?
- arrays - 为什么我不断收到数组索引必须为正的错误?
- sql - ORACLE SQL 重写查询