2015-03-18 22 views
12

Tôi đã một MySQL 5.0.84 chạy trên máy chủ Slackware 13.0 Staging và muốn sao chép một bảng duy nhất sang một máy chủ khác được xây dựng để sử dụng hệ điều hành Ubuntu 14.04 cho một số thử nghiệm khác. Tôi đã chụp mysqldump của bảng đó và được sao chép vào testing server. Tôi nhận được lỗi sau khi tôi cố gắng khôi phục tệp kết xuất.MySQL ERROR 1231 (42000): Biến 'character_set_client' không thể được đặt thành giá trị của 'NULL'

ERROR 1231 (42000):Variable 'character_set_client' can't be set to the value of 'NULL'

Hãy giúp tôi khắc phục lỗi này. Cảm ơn!

Trả lời

37

Tôi đã thực hiện một số tìm kiếm trên internet và cố định nó cuối cùng.

Nhập văn bản sau vào đầu tệp mysqldump và khôi phục thành công.

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
/*!40103 SET @[email protected]@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; 
+0

Điều này cho thấy sự cố khi tôi đặt @@, khi tôi tạo tệp kết xuất bằng cách sử dụng phpMyAdmin chỉ có một @. Bất kỳ ý tưởng? –

+0

Cảm ơn. Điều này cũng cố định nó cho tôi. Trên Ubuntu 16.04, cài đặt mới, nếu điều đó giúp bất kỳ ai khác. –

+0

Tôi có thể tìm mysqldump ở đâu? – nethken

14

tôi đã sửa đổi

/*!40101 SET character_set_client = @saved_cs_client */; 

để

/*!40101 SET character_set_client = 'utf8' */; 

trong tệp kết xuất sau mã để tạo bảng.

+1

utf-8 không hoạt động. nhưng thêm utf8 đã làm việc. –

+1

Đã bị nhầm lẫn, cần phải là 'utf8'. –

2

trên đường, mở file sql, cuối cùng, làm del:

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
    /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
    /*!40101 SET [email protected]_COLLATION_CONNECTION */; 

và nguồn nó một lần nữa, sau đó làm việc tốt cho tôi!

0

Vâng, cảm ơn tất cả các câu trả lời, Nó chỉ giúp tôi giải quyết vấn đề của mình. Nhưng việc sao chép và dán mã từ phía trên không hiệu quả đối với tôi. Vì vậy, tôi đã xuất khẩu tập tin sql mà đã có trong cơ sở dữ liệu của tôi và từ đó tôi lấy mã và thêm dòng sau vào đầu file sql của tôi để nhập

-- phpMyAdmin SQL Dump 
-- version 4.7.0 
-- https://www.phpmyadmin.net/ 
-- 
-- Host: 127.0.0.1 
-- Generation Time: Aug 16, 2017 at 07:24 AM 
-- Server version: 10.1.25-MariaDB 
-- PHP Version: 7.1.7 

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 
SET AUTOCOMMIT = 0; 
START TRANSACTION; 
SET time_zone = "+00:00"; 


/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8mb4 */; 

Bởi vì phần đầu này đã mất tích trong tài liệu sql của tôi. Sau đó, quá trình nhập đã thành công. Tôi hy vọng điều này cũng giúp người khác.

Các vấn đề liên quan